2010-06-07 10 views
70

Ho recentemente provato a utilizzare Qt Creator 1.3.2, Qt 4.6.2 e GCC 4.4.0 (versione a 32 bit) su Windows 7 (64-bit) a compilare un'applicazione che utilizza alcuni del C sperimentale estensioni 0x ++ e ha rilevato il seguente (fatale) errore:Configurazione degli switch del compilatore GCC in Qt, QtCreator e QMake

This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.

Nella mia ricerca di una soluzione, mi sono imbattuto il filo qmake and compiler flags?, e aggiunto il testo seguente il file .pro:

CXXFLAGS += -std=c++0x 

ma quello non sembrava fare la differenza.

Quindi, mi aspetto che ci sia qualche tag che devo aggiungere al file .pro (progetto), ma non ho mai combinato con gli switch del compilatore GCC in Qt, QMake e QtCreator prima, e sono incerto sul corretta invocazione/incantesimo. Quindi, la mia domanda è come impostare gli switch del compilatore GCC quando si usano QtCreator, QMake e Qt?

risposta

100

Si riduce alla lettura del manual. Invece di usare CXXFLAGS nel file .pro, è necessario utilizzare QMAKE_CXXFLAGS come in:

main.cpp:

#include <cinttypes> 

int main() { return 0; } 

main.pro:

SOURCES += main.cpp 
QMAKE_CXXFLAGS += -std=c++0x 
+5

Questo flag non funziona ancora con QtCreator 2.4.1 per alcuni motivi. – Chan

+0

Dove stai usando la bandiera? – andand

+1

+1, 'QMAKE_CXXFLAGS + = ...' può essere specificato anche come argomento aggiuntivo nella configurazione di build (ad esempio, la riga di comando). – MDMoore313

3

si dovrebbe usare

CONFIG += c++11 

per abilitare automaticamente i flag del compilatore C++ 11.

Cerca i file .prf nella tua installazione qt. Non so dove potrebbero essere su Windows, ma sulla mia installazione Linux sono sotto /opt/Qt/5.4/gcc_64/mkspecs/features.

Si potrebbe desiderare di leggere il qmake documentation per questo:

qmake can be set up with extra configuration features that are specified in feature (.prf) files. These extra features often provide support for custom tools that are used during the build process. To add a feature to the build process, append the feature name (the stem of the feature filename) to the CONFIG variable.

È possibile add your own features.

Ecco cosa ho trovato sul mio sistema. CONFIG + = nome consentirà la funzione:

./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 
1

L'unico modo che funziona davvero per me è inserirlo aQMAKE_CXXFLAGS.

Il CONFIG += c++11non aggiunge-std=c++11 al comando di compilazione.

+0

tieni presente che questa domanda è stata posta nel 2010. 'CONFIG + = C++ 11' è la soluzione corretta per qtcreator 3.X + (rilasciato nel 2012). – smerlin

Problemi correlati