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

发布于:2024-06-27 ⋅ 阅读:(195) ⋅ 点赞:(0)

背景介绍

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

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.

在寻找解决方案的过程中,我发现了一篇主题为“qmake和编译器标志?”的讨论,通过在项目文件(.pro 文件)中添加以下内容:

CXXFLAGS += -std=c++0x

但这并没有起到作用。

从未在Qt、QMake和QtCreator中修改过GCC编译开关的我,很不确定到底要在.pro文件中添加什么标签。我的问题是,当使用QtCreator、QMake和Qt时,如何设置GCC的编译开关?

解决方案

经过一番研究和试验,以下方法可以帮助解决这一问题。

正确使用QMAKE_CXXFLAGS

而不是直接使用CXXFLAGS,在你的.pro文件中,你应该使用的是QMAKE_CXXFLAGS,如下:

项目文件main.pro内容:

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

这样,QMake会自动将-std=c++0x编译开关添加到GCC编译选项中。

使用CONFIG选项启用C++11

你可以通过在.pro文件中添加:

CONFIG += c++11

来自动启用C++11编译开关。

Qt的配置文件(.prf文件)通常包含了一些预定义的编译选项,你可以在你的Qt安装目录下找到这些配置文件。在Linux系统上,通常位于/opt/Qt/5.4/gcc_64/mkspecs/features目录下。

.prf文件说明

.prf文件通过在CONFIG变量中添加特性名来启用特定的功能。例如:

CONFIG += c++11

会启用C++11编译支持。以下是一些常见的配置文件:

./c++11.prf
./c++14.prf
./exceptions.prf
./link_pkgconfig.prf
./qt.prf
./unix/thread.prf

你可以根据需要编辑这些文件或者创建自己的特性文件来支持定制的编译选项。

非Qt项目设置

如果你在QtCreator中进行非Qt项目的开发(例如没有.pro文件的项目),你可以在项目的构建配置中(即命令行参数)直接添加编译开关:

QMAKE_CXXFLAGS += -std=c++11

结论

通过在.pro文件中正确地使用QMAKE_CXXFLAGS,或通过在CONFIG变量中添加相应的配置选项,你可以轻松地在QtCreator、QMake和Qt中配置GCC编译开关以支持不同的C++标准。

这个方法可以确保你的项目在使用不同编译器选项时具有更高的可移植性和可维护性。

希望这些方法可以帮助你顺利编译使用C++11或其他标准的项目。


网站公告

今日签到

点亮在社区的每一天
去签到