'-std = c ++ 11'对C ++ / ObjC ++有效,但对C无效

问题描述 投票:1回答:3

我正在尝试使用以下配置构建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添加到配置中,但我总是遇到同样的问题。

如何解决?

c++ c c++11 makefile automake
3个回答
3
投票

既然没有人回答我,我会回答自己

事实上,-std=c++11是由全局变量CPPFLAGS注入的。

我刚刚在./configure-std=c++11消失之前添加了以下行

export CPPFLAGS=""

0
投票

如果使用ADD_DEFINITIONS(-std=c++0x)设置标志,可以使用REMOVE_DEFINITIONS(-std=c++0x)删除它,然后仅使用SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")设置为c ++

为什么会做这样的事情?在大型混合“大多数C ++”项目中,ADD_DEFINITIONSREMOVE_DEFINITIONS是基于特定cmake目录在std c++级别之间切换的快速方法,但是在编译期间抛出警告会产生意想不到的副作用 - 或者在-Werror构建时编译失败。


-1
投票

对我来说,这意味着“编辑setup.py并删除它添加的地方-std = c ++ 11”FWIW。

© www.soinside.com 2019 - 2024. All rights reserved.