如何修复“Qt 需要 C++17 编译器”错误?

bob*_*ill 12 macos qt gcc compiler-errors cgal

我安装了brewCGAL C++ 库。cmake .第一个基本示例中完成之后,我做了make并且遇到了一系列错误,第一个也是最重要的是:

/usr/local/include/QtCore/qglobal.h:96:6: error: "Qt requires a C++17 compiler"
#    error "Qt requires a C++17 compiler"
     ^
Run Code Online (Sandbox Code Playgroud)

这意味着我需要一种方法来告诉 Qt 使用 C++17 编译器。我怎样才能解决这个问题?我是一名工程师,以前从未遇到过类似的问题。以前也有过类似的问题(像这样),但它们是关于 Windows 的。

我使用的是 MacOS BigSur,11.6.2。并gcc --version返回

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.30)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)

Far*_*ani 11

我确实跑去cmake -DCMAKE_CXX_COMPILER="gcc" -DCMAKE_CXX_FLAGS="-std=c++17" .解决这个问题,但没有帮助。在花了一天时间尝试解决这个问题后,我通过删除 qt ( brew uninstall qt) 解决了它。我已经安装了两者qt,并且qt@5我认为 CMake 感到困惑并从 qt 中获取了一些文件,并从 qt@5 中获取了其他文件。希望这对某人有帮助。

  • 我安装了一些依赖项,这意味着“brew uninstall qt”不想运行。在这种情况下,使用“brew unlink qt”为我解决了这个问题。 (2认同)

Ric*_*ber 9

实际上,您需要告诉 cmake 在它生成的编译器命令中激活 c++17 支持。默认情况下,选择 Apple clang,并且附带早期的默认 std 支持。

cmake -DCMAKE_CXX_FLAGS="-std=c++17" .
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因您打算使用gcc包装器或其他编译器进行编译,您可以让 cmake 知道:

cmake -DCMAKE_CXX_COMPILER="gcc" -DCMAKE_CXX_FLAGS="-std=c++17" .
Run Code Online (Sandbox Code Playgroud)