代码之家  ›  专栏  ›  技术社区  ›  andand

在Qt、QtCreator和QMake中配置GCC编译器开关

  •  72
  • andand  · 技术社区  · 16 年前

    Qt Creator 1.3.2、QT4.62和GCC 4.4.0(32位版本)在Windows 7(64位)上编译使用一些实验C++ +0x扩展的应用程序,遇到以下(致命)错误:

    此文件要求编译器和库支持即将到来的 ISO C++标准,C++ 0x。这种支持目前处于试验阶段,必须加以改进

    在我寻找解决办法的过程中,我遇到了这个问题 qmake and compiler flags? ,并将以下内容添加到.pro文件中:

    CXXFLAGS += -std=c++0x
    

    但这似乎没什么区别。

    因此,我希望有一些标记需要添加到.pro(project)文件中,但我以前从未处理过Qt、QMake和QtCreator中的GCC编译器开关,而且我不确定正确的调用/咒语。所以,我的问题是在使用QtCreator、QMake和Qt时如何设置GCC编译器开关?

    3 回复  |  直到 15 年前
        1
  •  103
  •   andand    11 年前

    归根结底,就是阅读 manual . 而不是使用 CXXFLAGS 在.pro文件中,您需要使用 QMAKE_CXXFLAGS 例如:

    主.cpp:

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

    main.pro:

    SOURCES += main.cpp
    QMAKE_CXXFLAGS += -std=c++0x
    
        2
  •  5
  •   doug65536    10 年前

    你应该使用

    CONFIG += c++11
    

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

    寻找 .prf /opt/Qt/5.4/gcc_64/mkspecs/features .

    qmake documentation 为此:

    qmake可以设置额外的配置特性 在要素(.prf)文件中指定。这些额外的功能通常提供 在构建过程中添加一个特性,附加特性名称(词干 配置变量。

    add your own features

    这是我在系统里找到的。配置+= 名称

    ./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
  •  3
  •   rubenvb    10 年前

    唯一对我有效的方法就是 添加到 QMAKE_CXXFLAGS

    CONFIG += c++11 -std=c++11