首页 > 解决方案 > Travis CI 上的 CPack Source 存档为空,但不是本地

问题描述

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

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

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

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

标签: cmaketravis-cicpack

解决方案


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

我正在从 package_source 跳过源代码中的“构建”目录:

# 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}")

推荐阅读