You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下开发LLVM玩具编译器时缺失.inc文件的问题求助

问题:Windows下基于LLVM开发编译器时缺失.inc文件及llvm-tblgen工具

环境信息

  • 开发栈:Flex + Bison + LLVM
  • IDE:CLion
  • 系统:Windows
  • C标准:C17

当前CMake配置

cmake_minimum_required(VERSION 3.28)

project(Compiler)

set(CMAKE_CXX_STANDARD 17) 
include_directories("D:\\DEVELOPMENT\\LLVM\\llvm-project\\llvm\\include")

add_executable(Compiler
        lexer.yy.cpp
        parser.tab.hpp
        Ast.hpp
        Symbol.hpp
        Symbol.cpp
        parser.tab.cpp
        Ast.cpp )

编译错误详情

编译项目时,LLVM头文件Intrinsics.h和Attributes.h中引用的llvm/IR/IntrinsicEnums.inc、llvm/IR/Attributes.inc提示文件不存在,具体日志:

====================[ Build | Compiler | Debug ]================================
D:\DEVELOPMENT\CLion\bin\cmake\win\x64\bin\cmake.exe --build C:\Users\20786\Desktop\C++\CompilerPrinciple\ExperimentEdition\cmake-build-debug --target Compiler -j 14
[1/4] Building CXX object CMakeFiles/Compiler.dir/Ast.cpp.obj
FAILED: CMakeFiles/Compiler.dir/Ast.cpp.obj 
D:\DEVELOPMENT\mingw64\bin\c++.exe  -ID:/DEVELOPMENT/LLVM/llvm-project/llvm/include -g -fdiagnostics-color=always -MD -MT CMakeFiles/Compiler.dir/Ast.cpp.obj -MF CMakeFiles\Compiler.dir\Ast.cpp.obj.d -o CMakeFiles/Compiler.dir/Ast.cpp.obj -c C:/Users/20786/Desktop/C++/CompilerPrinciple/ExperimentEdition/Ast.cpp
In file included from D:/DEVELOPMENT/LLVM/llvm-project/llvm/include/llvm/IR/Module.h:22,
                 from C:/Users/20786/Desktop/C++/CompilerPrinciple/ExperimentEdition/Ast.cpp:7:
D:/DEVELOPMENT/LLVM/llvm-project/llvm/include/llvm/IR/Attributes.h:89:14: fatal error: llvm/IR/Attributes.inc: No such file or directory
   89 |     #include "llvm/IR/Attributes.inc"
      |              ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

尝试操作及遇到的问题

已知需编译LLVM源码生成.inc文件,但执行以下CMake配置命令后,未在build/bin找到llvm-tblgen工具及目标.inc文件,且配置日志显示大量Linux相关依赖缺失:

cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE="Release"

解决方案

方案1:使用预编译LLVM二进制包(推荐)

Windows下编译LLVM源码依赖复杂,优先选择官方预编译包:

  1. 下载对应Windows版本的LLVM预编译包(需匹配你的工具链,如MSVC或MinGW)
  2. 修改CMake配置,通过find_package自动引入LLVM的头文件、库和定义:
cmake_minimum_required(VERSION 3.28)
project(Compiler)

set(CMAKE_CXX_STANDARD 17)

# 替换为你的预编译LLVM路径下的cmake配置目录
set(LLVM_DIR "D:/DEVELOPMENT/LLVM/prebuilt/lib/cmake/llvm")
find_package(LLVM REQUIRED CONFIG)

include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})

add_executable(Compiler
        lexer.yy.cpp
        parser.tab.hpp
        Ast.hpp
        Symbol.hpp
        Symbol.cpp
        parser.tab.cpp
        Ast.cpp )

# 链接所需LLVM组件库
llvm_map_components_to_libnames(LLVM_LIBS core irreader)
target_link_libraries(Compiler ${LLVM_LIBS})

方案2:正确编译LLVM源码生成文件

若坚持编译源码,需适配Windows环境:

  1. 安装依赖:
    • 安装Python 3.8+(LLVM编译必需)
    • 安装Git(拉取LLVM子模块,确保源码完整)
    • 使用MSVC工具链(LLVM官方对MSVC支持更完善,MinGW依赖问题较多)
  2. 重新配置并编译:
    • 打开Visual Studio开发者命令提示符(确保环境变量正确)
    • 执行CMake配置命令:
      cmake -S llvm -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang"
      
    • 编译llvm-tblgen及相关生成文件:
      cmake --build build --config Release --target llvm-tblgen
      
    • 编译完成后,llvm-tblgen位于build/bin/Release,.inc文件生成在build/include/llvm/IR目录
  3. 项目中引用生成文件:
    • 在CMake中添加include_directories指向LLVM编译后的build/include目录,优先级高于源码的include目录

内容的提问来源于stack exchange,提问作者陈那几

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:22:37