Конфигурирование переключателей компилятора GCC в Qt, QtCreator и QMake - PullRequest
72 голосов
/ 07 июня 2010

Недавно я пытался использовать Qt Creator 1.3.2, Qt 4.6.2 и GCC 4.4.0 (32-разрядная версия) в Windows 7 (64-разрядная версия) для компиляции приложения с использованием некоторых экспериментальных расширений C ++ 0x и обнаружил следующую (фатальную) ошибку:

Этот файл требует поддержки компилятора и библиотеки для предстоящего Стандарт ISO C ++, C ++ 0x. Эта поддержка в настоящее время является экспериментальной и должна быть включается с помощью параметров компилятора -std = c ++ 0x или -std = gnu ++ 0x.

В поисках решения я наткнулся на ветку qmake и флаги компилятора? и добавил в файл .pro следующее:

CXXFLAGS += -std=c++0x

но, похоже, это не имело значения.

Итак, я ожидаю, что есть какой-то тег, который мне нужно добавить в файл .pro (проект), но я никогда не сталкивался с переключателями компилятора GCC в Qt, QMake и QtCreator, и я не уверен в правильности заклинание / заклинание. Итак, мой вопрос: как установить переключатели компилятора GCC при использовании QtCreator, QMake и Qt?

Ответы [ 3 ]

104 голосов
/ 15 июня 2010

Это сводится к чтению руководства . Вместо использования CXXFLAGS в файле .pro необходимо использовать QMAKE_CXXFLAGS как в:

main.cpp:

#include <cinttypes>

int main() { return 0; }

main.pro:

SOURCES += main.cpp
QMAKE_CXXFLAGS += -std=c++0x
5 голосов
/ 22 ноября 2015

Вы должны использовать

CONFIG += c++11

для автоматического включения флагов компилятора C ++ 11.

Найдите файлы .prf в вашей установке qt.Я не знаю, где они могут находиться в Windows, но в моей установке Linux они находятся под /opt/Qt/5.4/gcc_64/mkspecs/features.

. Вы можете прочитать документацию qmake для этого:

qmake может быть настроен с дополнительными функциями конфигурации, указанными в файлах функций (.prf).Эти дополнительные функции часто обеспечивают поддержку пользовательских инструментов, которые используются в процессе сборки.Чтобы добавить функцию в процесс сборки, добавьте имя функции (основа имени файла функции) в переменную CONFIG.

Вы можете добавить свои собственные функции .

Вот что я нашел в своей системе.CONFIG + = name включит функцию:

./android/android_deployment_settings.prf
./android/android.prf
./build_pass.prf
./c++11.prf
./c++14.prf
./cmake_functions.prf
./configure.prf
./create_cmake.prf
./ctest_testcase_common.prf
./ctest_testcase_installed.prf
./ctest_testcase.prf
./dbusadaptors.prf
./dbusinterfaces.prf
./declarative_debug.prf
./default_post.prf
./default_pre.prf
./designer_defines.prf
./device_config.prf
./egl.prf
./exceptions_off.prf
./exceptions.prf
./exclusive_builds_post.prf
./exclusive_builds.prf
./gcov.prf
./include_source_dir.prf
./incredibuild_xge.prf
./java.prf
./lex.prf
./link_ltcg.prf
./link_pkgconfig.prf
./ltcg.prf
./mac/default_post.prf
./mac/default_pre.prf
./mac/objective_c.prf
./mac/rez.prf
./mac/sdk.prf
./moc.prf
./no_debug_info.prf
./precompile_header.prf
./qfeatures.prf
./qlalr.prf
./qml1_module.prf
./qml1_plugin.prf
./qml_debug.prf
./qml_module.prf
./qml_plugin.prf
./qmltestcase.prf
./qpa/basicunixfontdatabase.prf
./qpa/genericunixfontdatabase.prf
./qt_android_deps.prf
./qt_app.prf
./qt_build_config.prf
./qt_build_paths.prf
./qt_common.prf
./qt_config.prf
./qt_docs.prf
./qt_docs_targets.prf
./qt_example_installs.prf
./qt_functions.prf
./qt_headersclean.prf
./qt_helper_lib.prf
./qt_installs.prf
./qt_module_headers.prf
./qt_module.prf
./qt_module_pris.prf
./qt_parts.prf
./qt_plugin.prf
./qt.prf
./qt_targets.prf
./qt_tool.prf
./resolve_config.prf
./resolve_target.prf
./resources.prf
./silent.prf
./simd.prf
./spec_post.prf
./spec_pre.prf
./testcase.prf
./testcase_targets.prf
./testcocoon.prf
./testlib_defines.prf
./uic.prf
./unix/bsymbolic_functions.prf
./unix/dylib.prf
./unix/hide_symbols.prf
./unix/largefile.prf
./unix/opengl.prf
./unix/openvg.prf
./unix/separate_debug_info.prf
./unix/thread.prf
./unix/x11inc.prf
./unix/x11lib.prf
./unix/x11.prf
./unix/x11sm.prf
./use_c_linker.prf
./vxworks.prf
./warn_off.prf
./warn_on.prf
./wayland-scanner.prf
./win32/console.prf
./win32/default_pre.prf
./win32/dumpcpp.prf
./win32/idcidl.prf
./win32/msvc_mp.prf
./win32/opengl.prf
./win32/openvg.prf
./win32/qt_config.prf
./win32/qt_dll.prf
./win32/rtti_off.prf
./win32/rtti.prf
./win32/stl_off.prf
./win32/stl.prf
./win32/windeployqt.prf
./win32/windows.prf
./winrt/console.prf
./winrt/font_deployment.prf
./winrt/package_manifest.prf
./yacc.prf
3 голосов
/ 22 марта 2016

Единственный способ, который действительно работает для меня, - это добавить его к QMAKE_CXXFLAGS.

CONFIG += c++11 не добавляет -std=c++11 к команде компиляции.

...