cmake:设置参数的默认值

nil*_*nil 2 cmake

我的UNIX Makefile如下:

   param=0

   run:
       ./foo -r "fun($(param))"
Run Code Online (Sandbox Code Playgroud)

因此,如果我做到了make run,我就会争取./foo - r "fun(0)"make run param=10争取./foo -r "fun(10)"

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

   add_custom_target(
    run 
    ./foo -r "\"fun($(param))\""
   )
Run Code Online (Sandbox Code Playgroud)

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

Jan*_*ger 6

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

基于您的问题的示例:

SET(参数0 CACHE STRING“测试变量默认为'0'”)
#...
add_custom_target(run ./foo -r“ \” fun($ {param})\“”“)

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

PS。这是针对CMake内部的变量,尤其是CMakeLists.txt本身的变量;据我所知,更改该值的可能性不会保留到生成的Makefile中。我不确定一开始是否有可能,因为它可能与CMake支持的所有目标(例如Visual Studio项目等)不兼容。无论如何,CMake似乎都不是为生成独立于CMake使用的构建文件而设计的。