在 cmake 中混合 C 和 C++ 源

Mixing C and C++ sources in cmake

本文关键字:C++ 混合 cmake      更新时间:2023-10-16

我正在尝试编译一个C并C++源代码。目前,我正在使用c ++ 0x标准进行C++,方法是将此行添加到cmake文件add_definitions(-std=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 "${CMAKE_CXX_FLAGS} -std=c++11")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")

-std=c99是否需要循环初始声明。

add_definitions用于定义,例如 -DUSE_SOME_LIBRARY .

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

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

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