qt – 向QMake添加-std = gnu 11编译器标志

我正在使用mingw32和g .4.9.3在
windows上编译qt5.7.

执行configure.bat时,我收到此错误:

C:\qt-everywhere-opensource-src-5.7.0\configure.bat -prefix C:\Qt-5.7 -skip qttools -skip qtwebchannel -skip qtwebengine -skip qtcharts -skip qtdatavis3d -platform win32-g++

C:\qt-everywhere-opensource-src-5.7.0\qtbase/qmake/library/qmakebuiltins.cpp: In member function ‘QByteArray QMakeEvaluator::getCommandOutput(const QString&) const’:
C:\qt-everywhere-opensource-src-5.7.0\qtbase/qmake/library/qmakebuiltins.cpp:419:94: error: ‘_popen’ was not declared in this scope
+ QLatin1String(” && “) + args).toLocal8Bit().constData(), “r”)) {

导致此错误的命令是:

g++ -c -o qmakebuiltins.o -std=c++11 -DUNICODE -ffunction-sections -g -IC:\qt-everywhere-opensource-src-5.7.0\qtbase/qmake + lot of stuff

另外,以下代码:

    #include <stdio.h>

int main( int argc, char ** argv )
{
     FILE * f = popen( argv[ 1 ], "r" );
     return 0;
}

不编译

g++ -std=c++11 mytest.cpp -o mytest

但是:

>g++ -std=gnu++11 mytest.cpp -o mytest

所以问题是如何修改配置文件传递给g的选项c 11到gnu 11?
谢谢

最佳答案 在Qt中添加编译器选项非常简单.只需在qmake文件中的某些位置添加以下行.

# C++ Compiler flags: Gnu C++ Extensions
QMAKE_CXXFLAGS += -std=gnu++11

同样,如果要传递C编译器选项,请使用此选项

# C Compiler flags for qmake 
QMAKE_CFLAGS += -std=gnu99

_popen不适用于c 11的原因是它实现为GNU C扩展而不是标准C.同样,VisualStudio也将_popen与C标准库分开定义.

点赞