'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效相关的知识,希望对你有一定的参考价值。
我正在尝试使用以下配置构建json-c:
./configure --target=arm-linux-androideabi --host=arm-linux-androideabi
--build=x86_64-unknown-linux-gnu
但我收到以下错误:
cc1: error: command line option '-std=c++11' is valid for C++/ObjC++ but not for C [-Werror]
我试图将--disable-std-c++11
和--disable-std-cpp11
添加到配置中,但我总是遇到同样的问题。
如何解决?
既然没有人回答我,我会回答自己
事实上,-std=c++11
是由全局变量CPPFLAGS
注入的。
我刚刚在./configure
和-std=c++11
消失之前添加了以下行
export CPPFLAGS=""
如果使用ADD_DEFINITIONS(-std=c++0x)
设置标志,可以使用REMOVE_DEFINITIONS(-std=c++0x)
删除它,然后仅使用SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
设置为c ++
为什么会做这样的事情?在大型混合“大多数C ++”项目中,ADD_DEFINITIONS
和REMOVE_DEFINITIONS
是基于特定cmake目录在std c++
级别之间切换的快速方法,但是在编译期间抛出警告会产生意想不到的副作用 - 或者在-Werror
构建时编译失败。
对我来说,这意味着“编辑setup.py并删除它添加的地方-std = c ++ 11”FWIW。
以上是关于'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效的主要内容,如果未能解决你的问题,请参考以下文章
cc1plus:错误:无法识别的命令行选项'-std = c ++ 11'Ubuntu gcc 4.7
为什么std :: runtime_error的c'tor采用对std :: string的常量引用?
抛出'std :: bad_alloc'实例后调用C ++终止
std :: make_pair:无法将'ch'(类型'char')转换为'char &&'[duplicate]
C ++错误:抛出'std :: bad_alloc'实例后调用terminate
安装Libsvm工具箱出现问题E:\MATLAB7\BIN\WIN32\MEX.PL: Error: 'CFLAGS=\$CFLAGS -std=c99