c++ - CMake 为 C 文件禁用 -std=c++11 标志

标签 c++ c++11 build cmake

我正在尝试构建 bkchaind .一种构建选项是使用 cmake,因此我使用 Homebrew (OSX 10.9.1) 安装了它。但是,当我执行 cmake 时,我得到:

[  2%] Building C object json-rpc-cpp/src/jsonrpc/CMakeFiles/jsonrpcStatic.dir/connectors/mongoose.c.o
error: invalid argument '-std=c++11' not allowed with 'C/ObjC'

我不太确定为什么 cmake 会尝试将特定于 C++ 的编译器选项传递给 C/ObjC 文件。如果我在主 CMakeLists.txt 文件中注释掉这一行:

ADD_DEFINITIONS(-std=c++11)

然后它不再将标志传递给任何 文件。但是,C++ 文件确实需要它。如何让 cmake 为 C++ 文件包含标志,但不为 C 文件包含标志?

最佳答案

使用 CMAKE_CXX_FLAGS 设置特定于 C++ 的标志:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

关于c++ - CMake 为 C 文件禁用 -std=c++11 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818497/

相关文章:

c++ - C++中_kbhit的替代功能?

c++ - 扩展/收缩动态数组

c++ - 为什么 CMake 似乎不使用 add_compile_options 命令应用 -pthread ?

c++ - 匿名函数 C++

java - 进程 'command ' C :\Program Files\Java\jdk1. 8.0_25\bin\java.exe'' 已完成,退出值非零 1

svn - 我可以在团队城市从我的存储库更新之前在团队城市中运行步骤吗?

c++ - sscanf 输入不工作

c++ - 判断一个抽象基类的构造函数是否为noexcept?

meteor - 在docker中构建meteor应用程序时出现"You have run Meteor as root"

c++ - 如果我删除了 const,为什么这个使用 boost::shared_ptr 的调用不能在 C++ 中编译?