Добавление флага -std = gnu ++ 11 в QMake

qt g++ mingw qt5 qmake

4052 просмотра

3 ответа

448 Репутация автора

Я собираю qt5.7 на окнах с mingw32 и g ++. 4.9.3. При выполнении 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 -where-opensource-src-5.7.0 \ qtbase / qmake / library / qmakebuiltins.cpp: в функции-члене 'QByteArray QMakeEvaluator :: getCommandOutput (const QString &) const': C: \ qt -where-opensource- src-5.7.0 \ qtbase / qmake / library / qmakebuiltins.cpp: 419: 94: ошибка: '_popen' не было объявлено в этой области + QLatin1String ("&&") + args) .toLocal8Bit (). constData (), "р")) {

Команда, которая приводит к этой ошибке:

g ++ -c -o qmakebuiltins.o -std = c ++ 11 -DUNICODE -функция-разделы -g -IC: \ qt-везде-opensource-src-5.7.0 \ qtbase / qmake + много вещей

Также следующий код:

    #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

Таким образом, вопрос в том, как я могу изменить опцию c ++ 11 для gnu ++ 11, которая передается в g ++ файлом конфигурации? Спасибо

Автор: user1482030 Источник Размещён: 18.07.2016 09:28

Ответы (3)


1 плюс

1126 Репутация автора

Добавление опций компилятора довольно просто в 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 ++.

Автор: Marcus Размещён: 26.07.2016 05:59

1 плюс

6328 Репутация автора

Согласно вики Qt , с текущей версией qmake, которую вы используете, вы также можете использовать CONFIG += c++11.

Автор: jwernerny Размещён: 03.08.2016 12:27

0 плюса

448 Репутация автора

Я нашел обходной путь, загрузив другую версию mingw в хранилище загрузок qt: здесь

Автор: user1482030 Размещён: 21.11.2016 09:41
Вопросы из категории :
32x32