在 cmake 中混合 C 和 C++ 源
Mixing C and C++ sources in cmake
我正在尝试编译一个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
相关文章:
- 混合组合和继承的C++问题
- 在混合代码库中将C转换为C++时出现许多包含错误
- D3D11-将混合权重和索引传递到顶点着色器
- C++分数混合比较运算符错误
- 是否可以混合使用SFINAE和模板专业化?
- 如何在 Python C++ 混合库中调试非确定性分段错误?
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- C++11 中的混合列表初始化
- C++以迭代方式搜索混合类型地图
- #pragma(*诊断)当将Clang分析器与GCC编译器混合时
- 混合 Rcpp 模块和 Rcpp::export
- C++/CLI 混合托管/本机 DLL 不起作用
- 在C++中混合覆盖和重载
- 关于 Direct3D9 中的 alpha 混合的问题
- 使用英特尔内部函数 (AVX) 中的混合说明
- C++ 中混合二进制/文本日志记录的最佳做法
- Fortran 和 C++ 的混合编程:Fortran 不能调用C++子程序
- 错误:在 C++ 目标 c 混合'self'使用未声明的标识符
- 是否有一个版本的glCopyImageSubData在Openg GL中使用混合?
- 为什么这个混合继承程序给出错误的输出?