2

我的 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))\""
   )

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

4

2 回答 2

6

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

基于您的问题的示例:

SET(param 0 CACHE STRING "测试变量默认为 '0'")
# ...
add_custom_target(运行 ./foo -r "\"fun(${param})\"")

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

PS。这适用于 CMake 内部的变量,特别是CMakeLists.txt它本身;据我所知,更改值的可能性不会转移到生成的 Makefile 中。首先我不确定这是否可行,因为它可能不兼容 CMake 支持的所有目标(例如 Visual Studio 项目等等)。无论如何,CMake 似乎并不是为生成独立于 CMake 使用的构建文件而设计的。

于 2013-11-11T16:42:23.463 回答
0

采用

set (projectname_param 0)

设置它。

于 2013-11-11T16:34:49.903 回答