IAE*_*IAE 16 c++ qt gcc cross-platform c++11
我正准备和我的朋友一起编写跨平台项目.我们决定分别使用Qt和gcc作为我们的IDE和工具链.他在Linux上工作,我在Windows上工作.
但是,Linux上的gcc不一定是Windows上的gcc.更具体地说,Windows上的Qt使用gcc 4.4安装mingw,我的朋友有gcc 4.7.所以我尝试为Windows获取更新的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)
Run Code Online (Sandbox Code Playgroud)
和
CONFIG += c++11 (Qt5)
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
或初始化列表:
int main(int argc, char *argv[])
{
QVector<int> testsData { 1, 2, 10, 42, 50, 123 };
QStringList options = { QLatin1String("foo"), QLatin1String("bar") };
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,看一下gcc 4.7的实现细节,这两个特性以及更多特性应该随时可用.
有没有其他人试图使用gcc和Qt for Windows?如果是这样,你是如何让它工作的?我想要一个使用gcc 4.6或4.7的解决方案,但如果不可能的话会更少.
或者,是否存在使用C++ 11功能的Linux和Windows开发环境?如果它真的有效,我还会满足于Qt以外的东西......
我使用了这些来源:
小智 13
QMAKE_CXXFLAGS += -std=c++0x
Run Code Online (Sandbox Code Playgroud)
因为您没有使用MinGW编译器而导致错误."D9002:忽略未知选项-std=c++0x
"是MSVC编译器的错误.
在QtCreator中,转到项目选项卡(左侧)并更改您正在使用的工具链.如果它没有自动检测MinGW,您将不得不通过单击管理按钮自己添加它.
Zin*_*gam 10
根据此链接:https://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects
现在可以这样做:
CONFIG += c++11
Run Code Online (Sandbox Code Playgroud)
要么
CONFIG += c++14
Run Code Online (Sandbox Code Playgroud)
另外,升级Qt 5.7将默认需要C++ 11编译器,并且将放弃对旧的非C++ 11编译器的支持.
要启用C++ 11 - 需要GCC 4.7及更高版本:
qmake构建系统:
QMAKE_CXXFLAGS += -std=c++11
Run Code Online (Sandbox Code Playgroud)
qbs构建系统:
cpp.cxxLanguageVersion: "c++11"
Run Code Online (Sandbox Code Playgroud)
要启用C++ 14 - 需要GCC 4.9及更高版本:
qmake构建系统:
QMAKE_CXXFLAGS += -std=c++14
Run Code Online (Sandbox Code Playgroud)
qbs构建系统:
cpp.cxxLanguageVersion: "c++14"
Run Code Online (Sandbox Code Playgroud)
注意:请注意"c ++ 11","c ++ 14"等区分大小写.
qbs构建系统:
cpp.cxxFlags: "-std=c++11"
cpp.cxxFlags: "-std=c++14"
Run Code Online (Sandbox Code Playgroud)
现在推荐GCC 4.7用于Qt5.使用GCC 4.7,您可以使用QMAKE_CXXFLAGS + = -std = c ++ 11
编辑:随着GCC 4.9,现在有可能通过使该标志以使C++ 14:QMAKE_CXXFLAGS + = -std = C + 11
归档时间: |
|
查看次数: |
15928 次 |
最近记录: |