cmake:设置参数的默认值

时间:2013-11-11 16:31:42

标签: cmake

我的UNIX Makefile如下:

   param=0

   run:
       ./foo -r "fun($(param))"

所以,如果我make run,我会得到./foo - r "fun(0)"和 对于make run param=10,我得到./foo -r "fun(10)"

现在我想使用cmake生成类似的Makefile。

   add_custom_target(
    run 
    ./foo -r "\"fun($(param))\""
   )

如何在cmake配置文件中设置param的默认值?

2 个答案:

答案 0 :(得分:4)

CMake中的概念有点不同。您可以定义“缓存变量”(基本上是为同一构建目录中的后续构建记住的变量,并且可以由用户自定义),它们带有默认值和文档字符串等。然后可以通过将-D name:type=value选项传递给cmake,或者使用其中一个友好的前端(例如ccmake,CMake的curses UI)来更改这些内容。

基于您的问题的示例:

SET(param 0 CACHE STRING "Test variable defaulting to '0'")
# ...
add_custom_target(run ./foo -r "\"fun(${param})\"")

您可以在CMake的详尽文档中找到更多详细信息。

PS。这是针对CMake中的变量,特别是CMakeLists.txt本身;据我所知,更改值的可能性不会转移到生成的Makefile中。我不确定这是否可能,因为它可能不兼容CMake支持的所有目标(例如Visual Studio项目和不支持的目标)。在任何情况下,CMake似乎都不是为生成独立于CMake使用的构建文件而设计的。

答案 1 :(得分:0)

使用

set (projectname_param 0)

设置它。