如何在macOS High Sierra 10.13.6上通过Homebrew安装Qt6?
问题原因
该报错本质是macOS High Sierra系统最高支持的Xcode 10.1自带Clang编译器对C++17 constexpr if 特性的支持存在缺陷,无法正确解析Qt6源码中INTEGRAL_CONVERTER宏展开后的常量判断逻辑,而Qt6官方编译要求最低Clang版本为11.0,加上Homebrew已不再为High Sierra做兼容补丁,因此会出现编译失败。
修复步骤
- 第一步:安装兼容High Sierra的高版本llvm编译器,官方源仍保留支持的llvm@13版本,执行命令:
brew install llvm@13
安装完成后在当前终端会话执行以下命令,临时将高版本llvm设置为默认编译器:
export CC="/usr/local/opt/llvm@13/bin/clang" export CXX="/usr/local/opt/llvm@13/bin/clang++" export LDFLAGS="-L/usr/local/opt/llvm@13/lib" export CPPFLAGS="-I/usr/local/opt/llvm@13/include" export PATH="/usr/local/opt/llvm@13/bin:$PATH"
- 第二步:修改qt包的编译配方,禁用Homebrew默认的原生编译器绑定,执行命令:
brew edit qt
在打开的文件中找到def install代码块,在代码块的第一行添加以下内容,强制使用llvm@13编译:
ENV.remove "HOMEBREW_CC" ENV.remove "HOMEBREW_CXX" ENV["CC"] = "/usr/local/opt/llvm@13/bin/clang" ENV["CXX"] = "/usr/local/opt/llvm@13/bin/clang++"
保存后关闭文件。
- 第三步:从源码编译安装qt,执行命令:
brew install --build-from-source qt
如果编译过程中出现依赖版本冲突,先执行brew upgrade更新对应依赖后再重新执行安装命令即可。
后续注意
- 安装完成后可再次执行
brew edit qt,删掉之前添加的编译器强制配置,避免后续更新包时出现异常。
内容的提问来源于stack exchange,提问作者crazyi
相关产品推荐
相关产品推荐

