我在 MacBook Pro M1 Max 上使用
cmake
编译几个完全不相关的程序时遇到了麻烦,但我不断收到相同的错误。输入 cmake -B build
(加上程序各自的选项)后,少量进程开始,但最终我收到一条错误消息:
CMake Error at /opt/local/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
Call Stack (most recent call first):
/opt/local/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
/opt/local/share/cmake-3.29/Modules/FindOpenMP.cmake:581 (find_package_handle_standard_args)
build/_deps/mctc-lib-src/CMakeLists.txt:50 (find_package)
-- Configuring incomplete, errors occurred!
我已经遇到这个问题好几个星期了,至少使用了三个不同的程序。我发现多个帖子中人们都有类似(可能相同)的问题(这个帖子特别听起来非常相似),但我还没有找到有效的解决方案。
从我读到的所有内容来看,听起来
cmake
正在尝试使用 Xcode 版本的 Clang,但这不支持 MPI,我需要将 cmake
定向到系统的(或者,在我的情况下,MacPort 的)安装 Clang。
到目前为止,我尝试通过在 cmake 命令之前设置环境变量来做到这一点:
export CC=/opt/local/libexec/llvm-19/bin/clang
export CXX=/opt/local/libexec/llvm-19/bin/clang++
export LDFLAGS="-L/opt/local/libexec/llvm-19/lib"
export CPPFLAGS="-I/opt/local/libexec/llvm-19/include"
我还尝试将其包含在
cmake
命令本身中:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCC=/opt/local/libexec/llvm-19/bin/clang -DCXX=/opt/local/libexec/llvm-19/bin/clang++ -DLDFLAGS=-L/opt/local/libexec/llvm-19/lib -DCPPFLAGS=-I/opt/local/libexec/llvm-19/include
我也尝试过使用不同的路径,以防我将
cmake
定向到错误的文件,包括 CC=/opt/local/bin/aarch64-apple-darwin24-gcc-14.2.0
,但我仍然没有找到任何有效的东西。
还有其他人遇到过这个问题吗?我是否犯了任何明显的错误?任何帮助将不胜感激!
事实证明,答案并不是为不同变量指定路径,正如我在搜索过程中找到的帖子中所建议的那样。答案(如 @RichardBarber 链接的这篇文章中提到的)只是在命令中指定编译器的名称:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCC="clang" -DCXX="clang++" -DOpenMP_C_FLAGS=-fopenmp=lomp -DOpenMP_C_LIB_NAMES="libomp"
无需将路径分配给任何二进制文件或库。