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

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

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

在寻找解决方案的过程中,我偶然发现了线程 Qmake 和编译器标志,并在. pro 文件中添加了以下内容:

CXXFLAGS += -std=c++0x

但似乎没什么区别。

所以,我希望有一些标签,我需要添加到。Pro (project)文件,但是我以前从来没有在 Qt、 QMake 和 QtCreator 中对 GCC 编译器开关做过手脚,而且我对正确的调用/咒语也没有把握。因此,我的问题是,在使用 QtCreator、 QMake 和 Qt 时,如何设置 GCC 编译器开关?

82516 次浏览

归根结底就是读取 手动操作。中使用 CXXFLAGS。你需要使用如下的 QMAKE_CXXFLAGS:

Cpp:

#include <cinttypes>


int main() { return 0; }

优点:

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

你应该用

CONFIG += c++11

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

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

为此,你可能需要阅读 Qmake 文档:

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

你可以 加上你自己的特色

下面是我在我的系统中发现的: CONFIG + = 姓名将启用这个特性:

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

对我来说唯一有效的方法就是 把它加到 QMAKE_CXXFLAGS

对编译命令执行 CONFIG += c++11 不会增加 -std=c++11