在 cmake 中混合 C 和 C++ 源代码
Mixing C and C++ sources in cmake
我正在尝试编译 C 和 C++ 源代码。
目前我通过将此行添加到 cmake 文件 add_definitions(-std=c++0x)
来使用 C++ 的 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 代码设置标准。
而不是 add_definitions
你应该使用这样的东西:
set(CMAKE_CXX_FLAGS "-std=c++0x")
你不应该为此使用 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
.
等定义
您应该首先测试编译器是否支持 C++11,请参阅宏 CheckCXXCompilerFlag
中包含的 check_cxx_compiler_flag
我正在尝试编译 C 和 C++ 源代码。
目前我通过将此行添加到 cmake 文件 add_definitions(-std=c++0x)
来使用 C++ 的 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 代码设置标准。
而不是 add_definitions
你应该使用这样的东西:
set(CMAKE_CXX_FLAGS "-std=c++0x")
你不应该为此使用 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
.
您应该首先测试编译器是否支持 C++11,请参阅宏 CheckCXXCompilerFlag
中包含的 check_cxx_compiler_flag