'-std=c++11' 对 C++/ObjC++ 有效,但对 C 无效
'-std=c++11' is valid for C++/ObjC++ but not for 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++ 设置
为什么要这么做?在大型混合 "mostly-C++" 项目中,ADD_DEFINITIONS
和 REMOVE_DEFINITIONS
是根据特定 cmake 目录在 std c++
级别之间切换的快速方法,但会产生抛出警告的意外副作用在编译期间——或者更糟的是 -Werror
构建时的编译失败。
对我来说这意味着 "edit setup.py and remove where it adds -std=c++11" FWIW。
我正在尝试使用以下配置构建 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")
为什么要这么做?在大型混合 "mostly-C++" 项目中,ADD_DEFINITIONS
和 REMOVE_DEFINITIONS
是根据特定 cmake 目录在 std c++
级别之间切换的快速方法,但会产生抛出警告的意外副作用在编译期间——或者更糟的是 -Werror
构建时的编译失败。
对我来说这意味着 "edit setup.py and remove where it adds -std=c++11" FWIW。