llvm windows编译成功

一、所需工具

  1. Visual Studio

    • 推荐版本:Visual Studio 2022。其他版本亦可支持。
  2. CMake

  3. Ninja

  4. LLVM

二、配置与编译步骤

  1. 以管理员身份打开命令行终端,输入以下命令来设置执行策略:

    Set-ExecutionPolicy Unrestricted
    

    按提示输入 Y 以确认。

  2. 进入项目目录并创建构建目录:

    cd D:\llvm-project-main\llvm-project-llvmorg-18.1.8\
    mkdir build
    cd build
    
  3. 使用CMake生成构建文件并开始编译:

    cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release \
    -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi;clang-tools-extra;libunwind;compiler-rt" \
    -DLLVM_ENABLE_ASSERTIONS=ON  -DCMAKE_CXX_FLAGS="/utf-8" ..\llvm\
    

三、常见错误及解决方案

如果在执行上述命令时出现以下错误:

CMake Error at CMakeLists.txt:139 (MESSAGE):
libcxx isn’t a known project:
bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libc;libclc;lld;lldb;mlir;openmp;polly;pstl;flang.
Did you mean to enable it as a runtime in LLVM_ENABLE_RUNTIMES?

此错误表明 libcxx 被CMake识别为未知项目,可能是由于LLVM版本的变化或CMake选项设置不当,需要设置DLLVM_ENABLE_RUNTIMES=“libcxx;libcxxabi;libunwind;compiler-rt”

解决方案:
  1. 使用正确的CMake选项:
    如果要构建LLVM项目,需使用 LLVM_ENABLE_RUNTIMES 选项来启用 libcxxlibcxxabi,而非 LLVM_ENABLE_PROJECTS。修改后的命令如下:

    cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release \
    -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt" \
    -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
    -DLLVM_ENABLE_ASSERTIONS=ON  -DCMAKE_CXX_FLAGS="/utf-8" ..\llvm\
    
  2. 检查LLVM版本与CMake的兼容性:

    • 确保CMake版本与LLVM版本兼容。如果CMake版本过旧,可能会触发一些CMake policy(如CMP0114和CMP0116)的警告或错误。
    • 可以尝试升级到最新版本的CMake,并参考LLVM文档确保使用了正确的构建选项。
  3. 修复CMake policy警告:

    • CMake可能提示某些策略已经过时,未来版本将移除旧的行为。在 CMakeLists.txt 中手动设置这些策略为 NEW,或确保代码已经适配新行为。

    例如,可在 CMakeLists.txt 的开头加入:

    cmake_policy(SET CMP0114 NEW)
    cmake_policy(SET CMP0116 NEW)
    

在这里插入图片描述

通过上述调整,应该可以解决配置错误,顺利完成构建。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/cea3b1058a0145c391763e9e9feca1e9.pn

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值