我发现我可以使用:
add_definitions(-DFOO -DBAR ...)
不幸的是,这不是便携式解决方案。如果我使用gcc,它将理解-D
开关,但如果我使用另一个编译器,它可能无法理解该开关。
是否有其他解决方案,例如
set(CMAKE_DEFINES ${CMAKE_DEFINES} FOO BAR)
答案 0 :(得分:1)
如果set(CMAKE_C_STANDARD 99)
不适用于所有编译器,则使用通常的现代方式指定编译选项:
target_compile_options(mytarget PUBLIC -std=c99)
如果需要,您还可以为不同类型的编译器添加编译器检查。
或者,您可以直接修改编译器标志变量,例如set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
,再次进行可能的编译器检查。
如果出于某种原因,您的编译器甚至无法工作或在没有特定选项的情况下生成成功的构建,那么请查看包含CMAKE_USER_MAKE_RULES_OVERRIDE
变量的包含文件,其中包含CMAKE_C_FLAGS_<CONFIG>_INIT
个变量,用于每个构建的初始编译器标记/配置类型。