Konfigurieren der GCC-Compiler-Switches in Qt, QtCreator und QMake


74

Ich habe kürzlich versucht, Qt Creator 1.3.2, Qt 4.6.2 und GCC 4.4.0 (32-Bit-Version) unter Windows 7 (64-Bit) zu verwenden, um eine Anwendung mit einigen der experimentellen C ++ 0x-Erweiterungen und zu kompilieren Der folgende (schwerwiegende) Fehler ist aufgetreten:

Diese Datei erfordert Compiler- und Bibliotheksunterstützung für den kommenden ISO C ++ - Standard C ++ 0x. Diese Unterstützung ist derzeit experimentell und muss mit den Compileroptionen -std = c ++ 0x oder -std = gnu ++ 0x aktiviert werden.

Auf meiner Suche nach einer Lösung bin ich auf die Thread- Flags qmake und compiler gestoßen. und fügte der .pro-Datei Folgendes hinzu:

CXXFLAGS += -std=c++0x

aber das schien keinen Unterschied zu machen.

Ich gehe davon aus, dass ich der .pro (Projekt) -Datei ein Tag hinzufügen muss, aber ich habe noch nie mit den GCC-Compiler-Schaltern in Qt, QMake und QtCreator herumgespielt, und ich bin mir nicht sicher, ob der Aufruf / die Beschwörung richtig ist . Meine Frage ist also, wie Sie GCC-Compiler-Schalter einstellen, wenn Sie QtCreator, QMake und Qt verwenden.

Antworten:


103

Es läuft darauf hinaus, das Handbuch zu lesen . Anstatt CXXFLAGSin der .pro-Datei zu verwenden, müssen Sie Folgendes verwenden QMAKE_CXXFLAGS:

main.cpp:

#include <cinttypes>

int main() { return 0; }

main.pro:

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

5
Dieses Flag funktioniert aus bestimmten Gründen immer noch nicht mit QtCreator 2.4.1.
Chan

Wo benutzt du die Flagge?
und

1
+1, Das QMAKE_CXXFLAGS+=...kann auch als zusätzliches Argument in der Build-Konfiguration (dh der Befehlszeile) angegeben werden.
MDMoore313

1
Was ist, wenn Sie in Qt Creator ein Nicht-Qt-Projekt durchführen? (Es hätte keine .pro-Datei. Was würden Sie dann tun?
Geremia

1
@Geremia Ich weiß es nicht ... Vielleicht möchten Sie eine andere Frage stellen.
undund

5

Du solltest benutzen

CONFIG += c++11

um C ++ 11-Compiler-Flags automatisch zu aktivieren.

Suchen Sie .prfin Ihrer qt-Installation nach Dateien. Ich weiß nicht, wo sie sich unter Windows befinden, aber unter meiner Linux-Installation befinden sie sich unter /opt/Qt/5.4/gcc_64/mkspecs/features.

Vielleicht möchten Sie die qmake-Dokumentation dazu lesen :

qmake kann mit zusätzlichen Konfigurationsfunktionen eingerichtet werden, die in Feature-Dateien (.prf) angegeben sind. Diese zusätzlichen Funktionen bieten häufig Unterstützung für benutzerdefinierte Tools, die während des Erstellungsprozesses verwendet werden. Um dem Erstellungsprozess ein Feature hinzuzufügen, hängen Sie den Feature-Namen (den Stamm des Feature-Dateinamens) an die Variable CONFIG an.

Sie können Ihre eigenen Funktionen hinzufügen .

Folgendes habe ich auf meinem System gefunden. CONFIG + = Name aktiviert die Funktion:

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

Der einzige Weg, der wirklich für mich funktioniert, ist es hinzuzufügen QMAKE_CXXFLAGS .

Der Befehl CONFIG += c++11 wird nicht -std=c++11 zum Kompilierungsbefehl hinzugefügt .


2
Denken Sie daran, dass diese Frage im Jahr 2010 gestellt wurde. Dies CONFIG += c++11ist die richtige Lösung für qtcreator 3.X + (veröffentlicht im Jahr 2012).
Smerlin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.