cmake - Travis CI 上的 CPack Source 存档为空,但不是本地
问题描述
我正在使用 CPack 创建源档案:
cmake --build . --config Release --target package_source
这在我的本地 Ubuntu 机器上运行良好,但是在 Travis CI 上构建时生成的档案是空的。没有错误消息。我已经检查了启用时的 CPack 日志,--debug
除了文件没有被复制到临时安装空间之外,没有看到任何差异。源路径和目标路径正确,但未找到文件。
为什么存档在某些机器上构建时是空的,而在其他机器上则不是?
解决方案
在被同一个问题困扰了 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}")
推荐阅读
- django - Django REST Framework 和 Bootstrap 是否足以构建一个完整的 webapp?
- reactjs - ReactJs - 登录重定向一秒钟,然后返回登录页面
- apache-spark - Hadoop YARN 容器退出/结束时如何运行一些自定义代码?
- python - 找到第 n 个斐波那契数列
- f# - 这条规则永远不会匹配:为什么?
- javascript - 如何处理不抛出 catch 的 API 请求?(403 错误)
- python - 我的一个python文件有一个变量x的增量编号如何导入该变量x并在另一个python文件上运行它所以显示x增加
- java - java.lang.IllegalStateException:找不到类 com.domain.Profile 所需的标识符属性!- Mongo,SpringBoot
- java - recyclerview textview的Android随机颜色
- reactjs - 如何在 React Slick Slider 中的 nextSlide 和 prevSlide 中添加类