2011-06-15 84 views
1

我想CMakeLists.txt文件的一部分被忽略,当用户调用如何在CMake中知道我们正在生成一个包?

make package 

所以我要寻找如CMAKE_COMMAND或CMAKE_PACKAGING一个变量,这样我可以做

if (CMAKE_COMMAND EQUAL 'package') ... 

if (CMAKE_PACKAGING) ... 

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

回答

0

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

默认情况下,'install'和'package'会使目标通常依赖于'all'make目标。 (所以,如果你输入“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”时发生。

相关问题