在cmake中混合使用C和C ++源代码

时间:2015-01-05 21:41:22

标签: c++ c c++11 cmake

我正在尝试编译C和C ++源代码。 目前我通过将此行添加到cmake文件add_definitions(-std=c++0x)来使用C ++ 0x标准。

在编译期间,我收到以下警告:cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]并且此错误:error: ‘for’ loop initial declarations are only allowed in C99 mode引用了c代码中的for循环。

我想知道如何在cmake文件中设置c代码的标准。

3 个答案:

答案 0 :(得分:7)

您不应该使用add_definitions,而是执行类似

的操作
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

-std=c99如果你想要循环初始声明。

add_definitions适用于-DUSE_SOME_LIBRARY等定义。

答案 1 :(得分:1)

而不是add_definitions你应该使用这样的东西:

set(CMAKE_CXX_FLAGS "-std=c++0x")

答案 2 :(得分:0)

您应首先测试编译器是否支持C ++ 11,请参阅宏CheckCXXCompilerFlag中包含的check_cxx_compiler_flag