如何在CMake中了解我们正在生成包?

时间:2011-06-15 12:47:51

标签: cmake packaging cpack

我希望在用户调用

时忽略CMakeLists.txt文件的一部分
make package

因此我正在寻找一个变量,例如CMAKE_COMMAND或CMAKE_PACKAGING,以便我能够做到

if (CMAKE_COMMAND EQUAL 'package') ...

if (CMAKE_PACKAGING) ...

这是否存在?可以实现吗?

1 个答案:

答案 0 :(得分:0)

CMake生成的make文件包含一些“预定义”的make目标,这些目标遵循那些使用它们的预期。目标,如全部,安装,打包和测试。

默认情况下,'install'和'package'制作目标通常取决于'all'制作目标。 (因此,如果您键入'make install',它会首先执行'make all'以确保在安装发生之前所有内容都是最新的。与'package'类似。)

'make package'实际上做的是在封面下调用cpack:

/full/path/to/cpack --config ./CPackConfig.cmake

如果执行:

,您可以看到正在调用此命令行
make package VERBOSE=1

您希望在包装盒中跳过CMakeLists.txt文件的哪一部分?没有变量,例如您正在寻找的变量,因为在CMake配置时不会发生打包;它在构建时间之后,当用户显式调用'make package'或'cpack'时发生。