qtcreator中C++14的编译
Compilation of C++14 in qtcreator
我有一个包含 C++14
部分的 qt 项目。
最近,我更改了 ubuntu 发行版。现在我有 16.04 LTS,我安装了 Qt creator 4.02(6 月 13 日构建)。
为了启用C++14
编译,我在工程文件中放入:
QMAKE_CXXFLAGS += -std=c++14
但是,在构建项目时,IDE 生成以下命令:
g++ -c -pipe -std=c++14 -g -O0 -g -std=gnu++11 -Wall -W -D_REENTRANT ...
正如所见,生成的 makefile
放置了标志 -std=gnu++11
,它覆盖了 C++14
的标志。我以前的发行版(LTS 12.04,相同的 qt creator 版本)没有发生这种情况。
我试过
CONFIG += -std=c++14
但行为是一样的。
有人可以提供任何线索吗?
而不是:
CONFIG += -std=c++14
使用:
CONFIG += c++14
你可以从根本上解决它。通过更改配置文件。
首先你需要你项目中使用的库路径。您可以通过查看 Projects 面板 (Ctrl + 5
) 并记住 (Build|Run)
按钮上的 "Kit" 的名称来确定路径,然后按照 Tools -> Options -> Build & Run -> Kits
, select你之前记得的"Kit",然后你可以看到Qt version:
行的内容,之后在Qt versions
选项卡你可以看到你对应的完整库路径需要。就我而言,我看到 /usr/local/Qt-5.4.1/
.
在 /usr/local/Qt-5.4.1/mkspecs/common/g++-base.conf
文件中(您可能安装了 Qt 库的另一个路径),您可以更改 QMAKE_CXXFLAGS_CXX11
或 QMAKE_CXXFLAGS_CXX14
(如果any) 变量到任何你想要的(比如 -std=gnu++1z
)。
对于 clang,路径在我的例子中变为 /usr/local/Qt-5.4.1/mkspecs/common/clang.conf
。
对于其他一些 targets/compilers 你可能应该遵循 Tools -> Options -> Build & Run -> Kits -> (select Kit you use) -> (look at 'Qt mkspec:' line at bottom)
然后在 /usr/local/Qt-5.4.1/mkspecs/*/qmake.conf
中找到(其中 *
是 Qt mkspec:
行内容)和所有包括 *.conf
文件一个您需要的字符串 QMAKE_CXXFLAGS_CXX11
或 QMAKE_CXXFLAGS_CXX14
。然后适当改变它的值。
那当然要用CONFIG += c++11
或CONFIG += c++14
,如Jon Harper mentioned in .
我有一个包含 C++14
部分的 qt 项目。
最近,我更改了 ubuntu 发行版。现在我有 16.04 LTS,我安装了 Qt creator 4.02(6 月 13 日构建)。
为了启用C++14
编译,我在工程文件中放入:
QMAKE_CXXFLAGS += -std=c++14
但是,在构建项目时,IDE 生成以下命令:
g++ -c -pipe -std=c++14 -g -O0 -g -std=gnu++11 -Wall -W -D_REENTRANT ...
正如所见,生成的 makefile
放置了标志 -std=gnu++11
,它覆盖了 C++14
的标志。我以前的发行版(LTS 12.04,相同的 qt creator 版本)没有发生这种情况。
我试过
CONFIG += -std=c++14
但行为是一样的。
有人可以提供任何线索吗?
而不是:
CONFIG += -std=c++14
使用:
CONFIG += c++14
你可以从根本上解决它。通过更改配置文件。
首先你需要你项目中使用的库路径。您可以通过查看 Projects 面板 (Ctrl + 5
) 并记住 (Build|Run)
按钮上的 "Kit" 的名称来确定路径,然后按照 Tools -> Options -> Build & Run -> Kits
, select你之前记得的"Kit",然后你可以看到Qt version:
行的内容,之后在Qt versions
选项卡你可以看到你对应的完整库路径需要。就我而言,我看到 /usr/local/Qt-5.4.1/
.
在 /usr/local/Qt-5.4.1/mkspecs/common/g++-base.conf
文件中(您可能安装了 Qt 库的另一个路径),您可以更改 QMAKE_CXXFLAGS_CXX11
或 QMAKE_CXXFLAGS_CXX14
(如果any) 变量到任何你想要的(比如 -std=gnu++1z
)。
对于 clang,路径在我的例子中变为 /usr/local/Qt-5.4.1/mkspecs/common/clang.conf
。
对于其他一些 targets/compilers 你可能应该遵循 Tools -> Options -> Build & Run -> Kits -> (select Kit you use) -> (look at 'Qt mkspec:' line at bottom)
然后在 /usr/local/Qt-5.4.1/mkspecs/*/qmake.conf
中找到(其中 *
是 Qt mkspec:
行内容)和所有包括 *.conf
文件一个您需要的字符串 QMAKE_CXXFLAGS_CXX11
或 QMAKE_CXXFLAGS_CXX14
。然后适当改变它的值。
那当然要用CONFIG += c++11
或CONFIG += c++14
,如Jon Harper mentioned in