如何修复 "Qt requires a C++17 compiler" 错误?

How to fix "Qt requires a C++17 compiler" error?

我安装了 brew CGAL C++ 库。 在 first basic example 中执行 cmake . 之后,我执行 make 并且出现了一系列错误,第一个也是最重要的错误是:

/usr/local/include/QtCore/qglobal.h:96:6: error: "Qt requires a C++17 compiler"
#    error "Qt requires a C++17 compiler"
     ^

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

我使用的是 MacOS BigSur,11.6.2。和 gcc --version returns

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

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

cmake -DCMAKE_CXX_FLAGS="-std=c++17" .

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

cmake -DCMAKE_CXX_COMPILER="gcc" -DCMAKE_CXX_FLAGS="-std=c++17" .