Reputation: 2243
I'm getting ready to program a cross-platform project with my friend. We decided on using Qt and gcc as our IDE and toolchain respectively. He works on Linux, I work on Windows.
However, gcc on Linux isn't necessarily gcc on Windows. More specifically, Qt on Windows installs mingw with gcc 4.4 and my friend has gcc 4.7. So I tried getting a more recent gcc version for windows.
My current version of Qt is 5 and using gcc 4.7 downloaded and installed from this site: http://www.equation.com/servlet/equation.cmd?fa=fortran
I installed it in C:\QtSDK\mingw and simply overrode all the files existing from the Qt installation. I figured that I wouldn't have to reconfigure anything in Qt if I just took the short route.
However, even using the compiler flags:
QMAKE_CXXFLAGS += -std=c++0x (Qt 4.7)
and
CONFIG += c++11 (Qt5)
the IDE or toolchain fails to compile a simple range-based for loop:
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;
}
or initializer-lists:
int main(int argc, char *argv[])
{
QVector<int> testsData { 1, 2, 10, 42, 50, 123 };
QStringList options = { QLatin1String("foo"), QLatin1String("bar") };
return 0;
}
However, looking at the implementation details of gcc 4.7, both of these features- and more- should be readily available.
Has anyone else tried to use gcc and Qt for Windows? If so, how did you get it to work? I would like a solution using gcc 4.6 or 4.7, but will settle for less if it is not at all possible.
Alternatively, is there a dev environment for Linux and Windows that makes use of C++11 features? I would also settle for something besides Qt if it just works...
I used the sources:
Upvotes: 16
Views: 17407
Reputation: 4626
According to this link: https://wiki.qt.io/How_to_use_C%2B%2B11_in_your_Qt_Projects
It is now possible to just do this:
CONFIG += c++11
or
CONFIG += c++14
Also the upcomming Qt 5.7 WILL REQUIRE C++11 compiler by default and will drop support for older non-C++11 compiler.
To enable C++11 - GCC 4.7 and newer is required:
qmake build system:
QMAKE_CXXFLAGS += -std=c++11
qbs build system:
cpp.cxxLanguageVersion: "c++11"
To enable C++14 - GCC 4.9 and newer is required:
qmake build system:
QMAKE_CXXFLAGS += -std=c++14
qbs build system:
cpp.cxxLanguageVersion: "c++14"
NOTE: Please note that "c++11", "c++14" etc. are case sensitive.
qbs build system:
cpp.cxxFlags: "-std=c++11"
cpp.cxxFlags: "-std=c++14"
GCC 4.7 is now recommended for Qt5. With GCC 4.7 you can use QMAKE_CXXFLAGS += -std=c++11
Edit: With GCC 4.9 it is now possible to enable C++14 by passing this flag: QMAKE_CXXFLAGS += -std=c+11
Upvotes: 10
Reputation: 158
QMAKE_CXXFLAGS += -std=c++0x
Results in an error because you're not using the MinGW compiler. "D9002: Ignoring unknown option -std=c++0x
" is an error from the MSVC compiler.
In QtCreator, go to the projects tab(on the left) and change the toolchain you're using. If it hasn't auto-detected MinGW, you're going to have to add it yourself by clicking on the manage button.
Upvotes: 13