防止 cmake 运行 cpack
Posted
技术标签:
【中文标题】防止 cmake 运行 cpack【英文标题】:Prevent cmake to run cpack 【发布时间】:2016-06-03 13:05:28 【问题描述】:我有一个 CMake 项目,我想阻止 make package
在某些平台上做除了打印消息之外的任何事情。
我知道如何添加一条消息,甚至是一条致命消息,但它在 cmake 生成期间运行,而不是在构建期间运行。我必须求助于add_custom_command
吗?这不会给我我想要的,因为这会创建一个新的构建目标......
如何覆盖某些平台的 package
目标以仅显示消息?
【问题讨论】:
【参考方案1】:为什么要在你的 cmake 列表中包含 cpack?
为了让 cmake 项目有一个 cpack 控制的包目标,你的项目应该包括如下一行:
include(CPack)
并且还设置了一些与 cpack 相关的属性。如果你不想这样,你可以把那条线去掉。
【讨论】:
“在某些平台上”,但我当然可以有条件地进行包含。 那么您是否希望源代码生成一个失败的 make 文件,目标包在 Linux 上不执行任何操作?正如你所说的,如果平台是 32 位,deb 安装程序(cpack 包的结果)拒绝安装,对吧? 对。不,我希望目标“包”打印一条消息(最好)或根本不存在。所以***.com/a/38119685/204658 是我一直在寻找的。span> 【参考方案2】:正如 shu 指出的,你可以这样做:
if (! WIN32)
include(cpack)
else()
cmake_policy(SET CMP0037 OLD)
add_custom_target(package
#add dependencies on other targets here
#[[DEPENDS install]]
COMMAND $CMAKE_COMMAND -E echo "custom target for non windows platforms!"
)
endif()
请注意,默认情况下,您将无法覆盖 test 和 package 等保留目标。我们将在此处关闭该策略以编写我们自己的包目标。
【讨论】:
以上是关于防止 cmake 运行 cpack的主要内容,如果未能解决你的问题,请参考以下文章
cmake/cpack 组件 debuginfo rpm 包没有出现
没有出现cmake / cpack组件的debuginfo rpm包