【问题标题】:Configuring the GCC compiler switches in Qt, QtCreator, and QMake在 Qt、QtCreator 和 QMake 中配置 GCC 编译器开关
【发布时间】:2011-02-28 13:07:04
【问题描述】:

我最近尝试在 Windows 7(64 位)上使用Qt Creator 1.3.2、Qt 4.6.2 和 GCC 4.4.0(32 位版本)使用一些实验性 C+ 编译应用程序+0x 扩展并遇到以下(致命)错误:

此文件需要编译器和库支持,以便即将推出 ISO C++ 标准,C++0x。这种支持目前是实验性的,必须 使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用。

在寻找解决方案的过程中,我遇到了线程qmake and compiler flags?,并将以下内容添加到 .pro 文件中:

CXXFLAGS += -std=c++0x

但这似乎没有什么不同。

所以,我希望我需要将一些标签添加到 .pro(项目)文件中,但我之前从未在 Qt、QMake 和 QtCreator 中弄乱过 GCC 编译器开关,我不确定正确的祈求/咒语。那么,我的问题是在使用 QtCreator、QMake 和 Qt 时如何设置 GCC 编译器开关?

【问题讨论】:

    标签: c++ qt c++11 qt-creator


    【解决方案1】:

    归结为阅读manual。而不是在 .pro 文件中使用CXXFLAGS,您需要使用QMAKE_CXXFLAGS,如下所示:

    main.cpp:

    #include <cinttypes>
    
    int main() { return 0; }
    

    main.pro:

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

    【讨论】:

    • 由于某些原因,该标志仍​​然不能与 QtCreator 2.4.1 一起使用。
    • 你在哪里使用标志?
    • +1,QMAKE_CXXFLAGS+=... 也可以在构建配置(即命令行)中指定为附加参数。
    • 如果你在 Qt Creator 中做一个非 Qt 项目怎么办? (它不会有 .pro 文件。那你会怎么做?
    • @Geremia 在我的脑海里,我不知道......你可能想考虑问另一个问题。
    【解决方案2】:

    你应该使用

    CONFIG += c++11
    

    自动启用 C++11 编译器标志。

    在您的 qt 安装中查找 .prf 文件。我不知道它们在 Windows 上的位置,但在我的 Linux 安装中它们位于 /opt/Qt/5.4/gcc_64/mkspecs/features 下。

    您可能想为此阅读qmake documentation

    qmake 可以设置额外的配置功能,这些功能是 在功能 (.prf) 文件中指定。这些额外的功能通常提供 支持在构建过程中使用的自定义工具。到 在构建过程中添加一个特性,附加特性名称(stem 的特征文件名)到 CONFIG 变量。

    你可以add your own features

    这是我在我的系统上找到的。 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】:

      真正对我有用的唯一方法是将其添加到 QMAKE_CXXFLAGS

      CONFIG += c++11 不会在编译命令中添加 -std=c++11

      【讨论】:

      • 请记住,这个问题是在 2010 年提出的。CONFIG += c++11 是 qtcreator 3.X+(2012 年发布)的正确解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      相关资源
      最近更新 更多