使用snmalloc构建LLVM时Include目录路径配置问题求助
解决LLVM集成snmalloc时头文件找不到的问题
1. 检查头文件拼写与路径
首先注意到编译错误中的头文件名是snmmlloc.h,这是明显的拼写错误,正确的头文件名应为snmalloc.h。请先确认LLVM代码中引用头文件的语句是否存在笔误,这可能是问题的直接诱因。
同时,确保你的snmalloc克隆目录(D:\git\snmalloc)下存在正确的头文件层级:
D:\git\snmalloc\snmalloc\snmalloc.h
如果路径不符,说明仓库克隆不完整,或需要调整目录结构。
2. 修正CMake参数配置
LLVM的LLVM_INTEGRATED_CRT_ALLOC参数指向snmalloc源码根目录,但部分场景下LLVM不会自动将该目录加入编译包含路径,可通过以下方式强制指定:
修改原有CMake命令,添加CMAKE_CXX_INCLUDE_PATH和CMAKE_C_INCLUDE_PATH参数:
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_ENABLE_EH=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_PARALLEL_COMPILE_JOBS=8 -DLLVM_PARALLEL_LINK_JOBS=8 -DLLVM_INTEGRATED_CRT_ALLOC="D:/git/snmalloc" -DCMAKE_CXX_INCLUDE_PATH="D:/git/snmalloc" -DCMAKE_C_INCLUDE_PATH="D:/git/snmalloc" -S llvm -B llvm-build
注:Windows下建议用正斜杠/代替反斜杠\,避免路径转义问题
3. 手动添加包含目录(可选)
如果上述命令仍未解决问题,可直接修改LLVM的主CMakeLists.txt:
找到处理LLVM_INTEGRATED_CRT_ALLOC的代码段,添加包含目录配置:
if(LLVM_INTEGRATED_CRT_ALLOC) include_directories(${LLVM_INTEGRATED_CRT_ALLOC}) endif()
4. 重新生成构建环境
删除原有的llvm-build目录,重新运行上述CMake命令,确保所有配置生效:
# Windows手动删除llvm-build目录后,执行: cmake -G "Ninja" [完整参数] -S llvm -B llvm-build
内容的提问来源于stack exchange,提问作者Jenet Scaria
相关产品推荐
相关产品推荐

