>我有一个CMake项目,我想防止make package
在某些平台上打印消息以外的任何事情。
我知道如何添加消息,甚至是致命的消息,但它在 cmake 生成期间运行,而不是在构建期间运行。我必须求助于一些add_custom_command
吗?这不会给我我想要的东西,因为这会创建一个新的构建目标......
如何覆盖某些平台的package
目标以仅显示消息?
为什么要在你的cmake列表中包含cpack?
为了使 cmake 项目具有 cpack 控制的包目标,您的项目应包含如下行:
include(CPack)
以及设置一些与 cpack 相关的属性。如果你不想这样,你可以把那条线拿出来。
正如 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()
请注意,默认情况下,不允许覆盖保留的目标,如测试和包。我们在此处关闭该策略以编写我们自己的包目标。