【发布时间】:2017-08-24 08:29:23
【问题描述】:
我发现我可以使用:
add_definitions(-DFOO -DBAR ...)
很遗憾,这不是一个可移植的解决方案。如果我使用 gcc,它将理解 -D 开关,但如果我使用另一个编译器,它可能无法理解该开关。
是否有其他解决方案,例如
set(CMAKE_DEFINES ${CMAKE_DEFINES} FOO BAR)
【问题讨论】:
-
-D是由 CMake 解析的,因此它是可移植的,应该适用于所有平台。您能否添加您可能遇到的任何错误消息? -
我收到了一条带有
add_definitions("-std=c99")的错误消息,它是gcc 特定的。 IAR 中有一个等价物,但 CMake 可能不知道它 -
好的。不要将
add_definitions()用于任何其他编译器开关然后定义。 CMake 具有一些编译器开关的跨平台抽象/选项。您要搜索的内容定义在名为CMAKE_C_STANDARD的变量中。 -
我不明白它是如何工作的。在函数
add_definition中,CMake 将解析和识别内容,并最终将其替换为诸如SHARC 编译器的--flags-linker -DFFOO之类的内容,但它不知道如何解析-std=c99。我怎么知道我需要使用哪种方法?
标签: cmake