MacOS 10.12.6执行CMake报Could not find OpenMP_C版本不适配问题求助
问题根源
你当前使用的Apple Clang 9.0编译器原生最高仅支持OpenMP 3.1版本,而编译目标项目要求OpenMP最低版本为4.5,版本不匹配导致配置失败。
解决方案
方案1:替换编译器为GCC(推荐,兼容性最好)
MacOS 10.12.6可兼容GCC 8~10版本,这类版本原生支持OpenMP 4.5及以上标准,操作步骤如下:
- 通过MacPorts安装对应版本GCC:执行
sudo port install gcc8,若使用Homebrew则执行brew install gcc@8 - 调整CMake命令,指定使用新安装的GCC作为编译器,移除原有OpenMP路径相关参数(GCC自带OpenMP支持无需额外配置),参考命令如下:
cmake .. \ -DCMAKE_C_COMPILER=/opt/local/bin/gcc-mp-8 \ -DCMAKE_CXX_COMPILER=/opt/local/bin/g++-mp-8 \ -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ -DCMAKE_OBJCXX_FLAGS=-stdlib=libc++ \ -DBINARY_PACKAGE_BUILD=ON \ -DRAWSPEED_ENABLE_LTO=ON \ -DBUILD_CURVE_TOOLS=ON \ -DBUILD_NOISE_TOOLS=ON \ -DDONT_USE_INTERNAL_LUA=OFF
若使用Homebrew安装的GCC,编译器路径替换为
/usr/local/bin/gcc-8和/usr/local/bin/g++-8即可。
方案2:使用官方LLVM/Clang替代Apple Clang
如果需要保留Clang编译链,可安装非Apple定制版的LLVM,操作步骤如下:
- 通过MacPorts安装LLVM 9及以上版本:执行
sudo port install llvm-9 - 调整CMake命令,指定使用新安装的Clang作为编译器,保留原有OpenMP路径参数,参考命令如下:
cmake .. \ -DCMAKE_C_COMPILER=/opt/local/bin/clang-mp-9 \ -DCMAKE_CXX_COMPILER=/opt/local/bin/clang++-mp-9 \ -DCMAKE_CXX_FLAGS=-stdlib=libc++ \ -DCMAKE_OBJCXX_FLAGS=-stdlib=libc++ \ -DOpenMP_C_INCLUDE_DIR=/opt/local/include/libomp \ -DOpenMP_CXX_INCLUDE_DIR=/opt/local/include/libomp \ -DCMAKE_LIBRARY_PATH=/opt/local/lib/libomp \ -DBINARY_PACKAGE_BUILD=ON \ -DRAWSPEED_ENABLE_LTO=ON \ -DBUILD_CURVE_TOOLS=ON \ -DBUILD_NOISE_TOOLS=ON \ -DDONT_USE_INTERNAL_LUA=OFF
方案3:关闭OpenMP功能(仅适用于项目支持可选OpenMP的场景)
如果编译目标项目允许关闭OpenMP支持,可直接在CMake参数中添加-DENABLE_OPENMP=OFF跳过OpenMP检测,无需更换编译器。
内容的提问来源于stack exchange,提问作者ItHertz
相关产品推荐
相关产品推荐

