我的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
的默认值?
答案 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)
设置它。