【发布时间】:2013-05-08 05:37:21
【问题描述】:
我需要在我的 CMake 文件 (CMake 2.8.10.2) 中的 C 和 C++ 编译行中添加各种标志。我看到有些人使用add_definitions,但据我所知,这是用于预处理器标志的(-D)。我有一些不想传递给预处理器的标志。
所以我一直在尝试修改CMAKE_C_FLAGS 和CMAKE_CXX_FLAGS。我看到有些人正在使用类似的东西:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -new -flags -here")
但后来我在 cmake 文档中读到这效率较低,正确的做法是使用 list(APPEND ...),如下所示:
list(APPEND CMAKE_C_FLAGS -new -flags -here)
但是,当我这样做时,我的编译行包含用分号分隔的标志并且是语法错误。我读到这是现在列表存储在内部,但我认为当我使用变量时这将由 cmake 处理。这似乎很基本;难道我做错了什么?我的意思是,除非您碰巧想要一个以分号分隔的值列表(除了我猜是 Windows %PATH% 设置或其他东西),否则如果无法使用这些列表,那么这些列表到底有什么用?即使文档表明它的效率/适当性较低,我是否应该使用引用的版本?
【问题讨论】:
-
我在 set() 方法中使用了宏,因为在复制内容等时很容易导致 var 名称不匹配:macro(append name item) set(${name} "${ ${name}} ${item}") endmacro()
标签: cmake