我正在尝试编译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代码的标准。
答案 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