如何从 CPack 的源代码版本中排除我的构建目录?

Posted

技术标签:

【中文标题】如何从 CPack 的源代码版本中排除我的构建目录?【英文标题】:How do I exclude my build directory from CPack's source release? 【发布时间】:2018-02-21 14:13:24 【问题描述】:

我刚刚意识到我的 CPack 版本的 package-version-Source.tar.Z 文件大小为 1.4 GB。事实证明,它包含了我的整个构建目录,包括实验性二进制文件、以前的版本等,都在每个 tarball 中。

如何从 CPack 版本中排除我的build 目录(最好还有我的.vscode.git 目录)?我在 CMakeLists.txt 中的 CPack 行如下所示:

include (InstallRequiredSystemLibraries)
set (CPACK_RESOURCE_FILE_LICENSE  
     "$CMAKE_CURRENT_SOURCE_DIR/LICENSE")
set (CPACK_PACKAGE_VERSION_MAJOR "$Pwr_VERSION_MAJOR")
set (CPACK_PACKAGE_VERSION_MINOR "$Pwr_VERSION_MINOR")
include (CPack)

【问题讨论】:

看起来您正在搜索 CPACK_SOURCE_IGNORE_FILES 变量,该问题中描述了该变量的用法:***.com/questions/17935748/…。 您的INSTALL 命令是什么?请注意,打包应该从安装树而不是构建树进行,因为后者的文件通常不可移植。 【参考方案1】:

我遇到了同样的情况,尽管生成的源 tarbal 的大小小于你的,只有几百 MB。

我的解决方案是在之前添加一行

include(CPack)

在你的情况下,它看起来像这样

set(CPACK_SOURCE_IGNORE_FILES "build")
include(CPack)

由于"build" 是正则表达式,因此不仅您的build 目录将被排除,名称与build 匹配的文件和目录也将被排除,例如build-dbgmybuildetc..

【讨论】:

以上是关于如何从 CPack 的源代码版本中排除我的构建目录?的主要内容,如果未能解决你的问题,请参考以下文章

从 cpack 组件中删除后缀

如何更改使用 CPack 安装的可执行文件的名称?

PHP PharData:从目录构建 .tar 存档,带有排除项

从 CPack 构建中删除 Catkin 工件

从 Eclipse CDT 项目中完全排除某些目录

如何从通过 Jenkins 使用 Octopack 构建的 NuGet 包中排除目录和文件?