cmake 和 llvm-config 配置

cmake and llvm-config config

我在我的 Unix 机器上安装了多个版本的 llvm,我正在构建一个需要 LLVM50 和更低版本的 CMake 项目,但是设置 CMake LLVM_CONFIG 路径它会找到 LLVM60。

有没有办法推动 CMake 找到正确的 LLVM 版本。

您没有写下您的命令行如何访问这些版本(例如,Clang 3.9 是否作为 clang-3.9 执行,或者您是否必须将其 bin 目录导出到 $PATH环境变量?)

一旦所需的 LLVM/Clang 版本在我的 $PATH 中,我通常做的是使用 llvm-config 作为我感兴趣的特定版本来传递 cmake 变量值(特别是 LLVM_DIR),例如

cmake \
  -GNinja \
  -DCMAKE_C_COMPILER=clang \
  -DCMAKE_CXX_COMPILER=clang++ \
  -DLLVM_DIR="$(llvm-config --cmakedir)" \
  -DCMAKE_BUILD_TYPE=Debug \
[...]

如果 --cmakedir 选项在您想要的 LLVM 版本中不可用,请改用 $(llvm-config --prefix)/share/llvm/cmake/) 之类的东西(或带有定义的 cmake 目录所在的任何地方)。

此外,如前所述,将 CMAKE_C_COMPILERCMAKE_CXX_COMPILER 调整为正确的可执行文件名称。

您可以在 Linux 中更新 $PATH 变量,例如:

export $PATH=<path_to_llvm_bin_folder>:$PATH

如果你总是使用特定版本的 llvm,你也可以将它放在你的 .bashrc 文件中。