gcc 告诉QMake -std=C++17,QMAKE_CXXFLAGS被覆盖

zzlelutf  于 2023-03-23  发布在  其他
关注(0)|答案(2)|浏览(251)

我用的是Qt 5.9.1,一切正常,除了一个小问题:它覆盖了我的-std=C++17

项目:

#CONFIG += c++14 #makes -std=gnu++1y 
#CONFIG += c++17  # is not supported by Qt591
QMAKE_CXXFLAGS += -std=c++17
TARGET = equipment
TEMPLATE = app
SOURCES += ....
....

编译说明:

g++ -c -pipe -std=c++17 -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC
-DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_SERIALPORT_LIB -DQT_CORE_LIB  
-I../app -I/opt/Qt5.9.1/5.9.1/gcc_64/include -I/opt/Qt5.9.1/5.9.1/gcc_64
/include/QtCore -I. -I/opt/Qt5.9.1/5.9.1/gcc_64/mkspecs/linux-g++ 
-o test0.o ../test0.cc

我们可以看到两个-std=,QMake的第二个-std=gnu++11覆盖了我的第一个-std=c++17

如何让QMake使用-std=C++17

whhtz7ly

whhtz7ly1#

尝试CONFIG += c++1z,如果不起作用,将其传递给QMAKE_CXXFLAG编译器。

flvtvl50

flvtvl502#

我也遇到了类似的问题。但原因是pkg-config包含了目标库(-std=с++11)的依赖标志。对于g++编译器来说,最后一个标志具有最高的优先级。而qmake在你的标志之后添加了库标志及其依赖关系。

相关问题