【问题标题】:qmake and std::filesystem on MacMac 上的 qmake 和 std::filesystem
【发布时间】:2020-12-11 20:37:13
【问题描述】:

我正在使用 Qt Creator 和一个 qmake 项目。我有一个非常简单的问题:

#include <filesystem>
...
std::filesystem::path myPath;

在构建期间以及在 IDE 中,我收到错误消息“路径不可用:在 macOS 10.15 中引入”。

我可以使用 g++ 或 clang++ 手动编译(不使用 qmake)。

我的 qmake 项目文件有:

TEMPLATE = app
CONFIG += c++17
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += sdk_no_version_check

有魔法咒语吗?我什至不关心构建,因为这甚至不是 Qt 应用程序,而且我有一个手动生成的 Makefile。我只是不希望 IDE 对我大喊错误。

我可以在 StackOverflow 上找到关于链接问题的最接近的相关项目。尽管我尝试了各种建议的标志,但我什至在 Qt Creator 中都没有走那么远。

--

我正在做更多的挖掘工作。我正在手动编辑生成的 Makefile 并运行 make 并从 clang++ 中得到相同的错误。我试过g++。同样的错误。但通常我使用自己手动编写的 Makefile 进行构建,并且编译干净。

所以我查看了标志:

-mmacosx-version-min=10.13

在编译期间手动删除该错误(从命令行)。

所以,问题:

  1. 如何让 qmake 不将该标志放入生成的 Makefile 中?

  2. 如何让 linter 看不到该标志(我认为这就是它在 IDE 的代码编辑器部分内联显示的原因)?

【问题讨论】:

  • 无论如何,看看:stackoverflow.com/a/49192230/5366641
  • @scopchanov Qt Creator 是 4.13.3,基于 Qt 5.15.2。我看过那个答案。我没有make问题,而是IDE问题。我正在做 config += c++17 部分。
  • 这两个都不是 Qt 的版本。无论如何,Qt Creator 标记这个是什么意思?您在哪里看到错误?
  • 让我解释一下。 IDE 本身并不是一个工具。它是各种工具的 GUI。解决方案会有所不同,具体取决于抱怨的工具。因此,如果您在“问题”窗口中看到错误,那就是编译器。如果您在线看到错误 - 它是 linter(静态代码分析工具)。根据您分享的信息,我最好的选择是,您的编译器或 linter 不支持 C++17。
  • 解决办法是把这个添加到.pro文件中:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15

标签: c++ qt


【解决方案1】:

我正在寻找的魔法咒语竟然在 .pro 文件中:

 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15

如果没有它,它会尝试构建以支持早期版本的 MacOS,该版本还没有 C++17 功能。

【讨论】:

  • 我建议在 Qt/VER/macos/mkspecs 下的 qconfig.pri 中更改该行,以便更改在所有项目中自动发生。
猜你喜欢
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
相关资源
最近更新 更多