我正准备和我的朋友一起编写一个跨平台项目。我们决定分别使用Qt和gcc作为我们的集成开发环境和工具链。他在Linux上工作我在Windows上工作。
然而,Linux上的gcc并不一定就是Windows上的gcc。更具体地说,Windows上的Qt安装了名w和gcc 4.4,而我的朋友安装了gcc 4.7。所以我试着换了一个更新的视窗系统的gcc版本。
我当前的Qt版本是5,使用的是从以下站点下载并安装的gcc 4.7:http://www.equation.com/servlet/equation.cmd?fa=fortran
我将其安装在C:\QtSDK\mingw中,并简单地覆盖了Qt安装中存在的所有文件。我想,如果我只是走最短的路线,我就不需要在Qt中重新配置任何东西。
但是,即使使用编译器标志:
QMAKE_CXXFLAGS += -std=c++0x (Qt 4.7)和
CONFIG += c++11 (Qt5)IDE或工具链无法编译基于范围的简单for循环:
int main(int argc, char *argv[])
{
int my_array[5] = {1, 2, 3, 4, 5};
for (auto x : my_array)
std::cout << x << std::endl;
return 0;
}或初始化器列表:
int main(int argc, char *argv[])
{
QVector<int> testsData { 1, 2, 10, 42, 50, 123 };
QStringList options = { QLatin1String("foo"), QLatin1String("bar") };
return 0;
}然而,看看gcc 4.7的实现细节,这两个功能-甚至更多-应该都是现成的。
有没有其他人尝试过使用Windows版的gcc和Qt?如果是这样,你是如何让它工作的?我想要一个使用gcc 4.6或4.7的解决方案,但如果根本不可能的话,我会接受更少的。
或者,是否有用于Linux和Windows的使用C++11特性的开发环境?我也会满足于Qt之外的东西,如果它只是工作的话……
我使用了以下来源:
C++0x in Qt (Qt 4.7-4.8)
C++11 in Qt5
发布于 2012-06-17 02:52:13
QMAKE_CXXFLAGS += -std=c++0x会导致错误,因为您没有使用MinGW编译器。"D9002:忽略未知选项-std=c++0x“是来自MSVC编译器的错误。
在QtCreator中,转到projects选项卡(在左侧)并更改您正在使用的工具链。如果它没有自动检测到MinGW,您必须通过单击manage按钮自己添加它。
发布于 2012-12-09 17:43:56
更新:
根据此链接:https://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects
现在可以这样做了:
CONFIG += c++11或
CONFIG += c++14另外,升级中的Qt5.7默认情况下将需要C++11编译器,并将放弃对旧版非C++11编译器的支持。
旧版更新:
要启用C++11 -需要使用GCC 4.7及更高版本:
qmake构建系统:
QMAKE_CXXFLAGS += -std=c++11qbs构建系统:
cpp.cxxLanguageVersion: "c++11"要启用C++14 - GCC 4.9及更高版本:
qmake构建系统:
QMAKE_CXXFLAGS += -std=c++14qbs构建系统:
cpp.cxxLanguageVersion: "c++14"注意:请注意,"c++11“、"c++14”等是区分大小写的。
废弃版本:
qbs构建系统:
cpp.cxxFlags: "-std=c++11"
cpp.cxxFlags: "-std=c++14"旧版本:
现在推荐在Qt5上使用GCC 4.7。在GCC 4.7中,您可以使用QMAKE_CXXFLAGS += -std=c++11
编辑:使用GCC 4.9现在可以通过传递以下标志来启用C++14 : QMAKE_CXXFLAGS += -std=c+11
https://stackoverflow.com/questions/11066068
复制相似问题