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

Cla*_*diu 7 c++ build cmake c++11

我正在努力建立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'
Run Code Online (Sandbox Code Playgroud)

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

ADD_DEFINITIONS(-std=c++11)
Run Code Online (Sandbox Code Playgroud)

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

Any*_*orn 12

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

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Run Code Online (Sandbox Code Playgroud)