Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake disable-std=c++;11 C文件的标志_C++_C++11_Build_Cmake - Fatal编程技术网

C++ CMake disable-std=c++;11 C文件的标志

C++ CMake disable-std=c++;11 C文件的标志,c++,c++11,build,cmake,C++,C++11,Build,Cmake,我正在努力建造。一个构建选项是使用cmake,所以我用自制软件(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会尝试将

我正在努力建造。一个构建选项是使用cmake,所以我用自制软件(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++文件确实需要它。我如何得到<代码> Cugs<代码>,以包含C++文件的标志,但不适用于C文件?

< P>使用<代码> CMACHYCXXFLAG/<代码>设置C++特定标志:

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

这种类型的事情可以显式完成,而不依赖于编译器标志的特定格式:

target_compile_features(someTargetName PUBLIC cxx_std_14)
target\u compile\u features
也可以更隐晦地做到这一点,方法是请求只在所需语言版本中找到的特定语言功能

另一种方法是设置目标属性:

set_property(TARGET server PROPERTY CXX_STANDARD 14)
或者可以设置
CMAKE\u CXX\u STANDARD
,其值用作目标上
CXX\u STANDARD
的默认值,然后允许目标隐式继承该值


(这里我使用的是2014年的标准,但当然可以指定11或其他一些值。)

也许可以查看CMakeLists.txt文件中的标志是否设置在某个位置?@Anycorn:Hah-yep我刚刚这样做了,并更新了问题。不,你和OP有损坏的图片图标!:)哦,那就更有意义了。谁在他们的头脑正常会使用鲤鱼作为个人资料图片。