CPack 源存档在 Travis CI 上为空,但在本地不是

CPack Source archive empty on Travis CI but not locally

我正在使用 CPack 创建源存档:

cmake --build . --config Release --target package_source

这在我的本地 Ubuntu 机器上运行良好,但在 Travis CI 上构建时生成的存档是空的。没有错误消息。我在启用 --debug 时检查了 CPack 日志,除了文件没有被复制到临时安装 space 之外,没有发现任何差异。源路径和目标路径正确,但找不到文件。

为什么在某些机器上构建时存档是空的,而在其他机器上却不是?

在被同一个问题困扰 10 多个小时后,我终于弄明白了。也许对你来说也是一样的。在排除所有其他原因后,这​​实际上是最合乎逻辑的事情:文件被忽略了!

我在 package_source:

的源代码中跳过了 "build" 目录
# exclude build directories like /build/, /build-* and /build_*
list(APPEND CPACK_SOURCE_IGNORE_FILES "/build[\-_/]")

但是travis上的路径是/home/travis/build/AlexanderLanin/ccache

选项 1

我不是正则表达式专家,但这至少应该让您走上正确的道路:

list(APPEND CPACK_SOURCE_IGNORE_FILES "^((?!/home/travis/).*|/home/travis/.+)/build[\-_/]")

解释@https://regex101.com/r/DJfeDi/1

选项 2

假设您在 CMakeLists.txt:

内,稍微简单一些
list(APPEND CPACK_SOURCE_IGNORE_FILES "^${CMAKE_SOURCE_DIR}/build[\-_/]")
list(APPEND CPACK_SOURCE_IGNORE_FILES "^${CMAKE_BINARY_DIR}")