gpt4 book ai didi

c++ - CONFIG += c++11(仍然)在 Linux 上不起作用

转载 作者:行者123 更新时间:2023-11-28 05:03:42 28 4
gpt4 key购买 nike

我读过几个关于该主题的讨论,有人说 qmake < 3.0 不正确支持该指令。我刚刚为 g++-64 重新安装了 Qt 5.9.1,但问题仍然存在。此外,我尝试过各种 mkspecs/xxx/xxx.conf 文件,但没有成功。

CONFIG += c++11 添加到 .pro 并没有真正在 Makefile 中添加 CXX 标志 -std=c++11,因此出现错误

error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

编译时。

我正在使用最新版本的 Qt 库 (5.9.1) 在 Linux x64(一个 Ubuntu 发行版)上工作。使用 MSVC2015 和 MinGw 在 Windows 上编译相同的项目没有错误。

如果我声明 QMAKE_CXXFLAGS += -std=c++11 而不是 CONFIG += c++11,它会起作用,但建议使用前者声明,因为 qmake 将通过 CONFIG 指令自动处理 CXX 标志。可怕的是,看起来它并没有这样做......

最佳答案

CONFIG += c++11 应该足够了,这样你的编译器就可以用正确的标志调用来启用 C++11 支持。

但是,从 5.7 开始,Qt 需要 C++11 支持,因此即使没有 CONFIG += c++11,您也应该让编译器调用 C++11 支持。

我认为对于您的编译器,qmake“认为”c++11 支持是默认行为,并且 qmake 不添加 -std=c++11 标志。

如果您有兴趣,可以查看 mkspecs 文件。正如@Swift 提到的,您必须检查您的,因为它们可能已被更正。在我的 Qt 安装中,似乎一切正常,如 mkspecs/common/g++-base.conf我有 QMAKE_CXXFLAGS_CXX11 = -std=c++11
QMAKE_CXXFLAGS_GNUCXX11 = -std=gnu++11
.

如果我是对的,这意味着您可以通过尝试使用 CONFIG += c++14(或 CONFIG += c++1z)来绕过 qmake 行为.您也可以尝试 CONFIG += strict_c++(或 CONFIG -= strict_c++),此选项将禁用(或启用)GNU 扩展,从而强制 qmake 添加 - std=c++11(这样 g++ 就不会使用隐式的 -std=gnu++11)。

关于c++ - CONFIG += c++11(仍然)在 Linux 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45330284/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com