防止 cmake 到 运行 cpack
Prevent cmake to run cpack
我有一个 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()
请注意,默认情况下,不允许您覆盖保留的目标,例如 test 和 package。我们在这里关闭该策略以编写我们自己的包目标。
我有一个 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()
请注意,默认情况下,不允许您覆盖保留的目标,例如 test 和 package。我们在这里关闭该策略以编写我们自己的包目标。