如何构建LLVM?

4
我最近在系统中构建并安装了llvm,期望这是构建qtcreator所必需的:https://paste.ubuntu.com/p/23GCCS5xxS/ 根据我在那里看到的内容,我设置了变量如下:
➜  qt6.2 git:(6.2) ✗ echo $LLVM_INSTALL_DIR

/usr/local/lib/cmake/llvm/

然而,在配置Qt6.2时,它仍然会给出以下信息。
WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.
Either set CMAKE_PREFIX_PATH or LLVM_INSTALL_DIR to the location of your llvm installation.

我了解到,在构建 LLVM 时,我没有同时构建 Clang。根据 https://clang.llvm.org/get_started.html 提供的信息,它给出了以下行:
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
make
#This builds both LLVM and Clang for debug mode.

这很令人沮丧,因为现在我必须重新构建它,这需要很长时间。 我只想要一个从llvm构建和安装所有内容的命令,这样我就不必一直回到这些东西了。这可能吗?

2个回答

8
构建所有内容,请按照以下步骤进行:
$ git clone --depth 1 --branch llvmorg-12.0.1 https://github.com/llvm/llvm-project.git
$ cmake -S llvm-project/llvm -B llvm-project/build \
        -DCMAKE_BUILD_TYPE=Release \
        -DLLVM_ENABLE_PROJECTS=all \
        -DCMAKE_CXX_COMPILER=clang++ \
        -DCMAKE_C_COMPILER=clang
$ cmake --build llvm-project/build -j8
$ cmake --install llvm-project/build --prefix /usr/local  # or somewhere else

您可能还对第一个CMake命令的以下构建标志感兴趣:
- -DLLVM_ENABLE_TERMINFO=OFF -- 删除对terminfo的依赖项 - -DLLVM_ENABLE_ASSERTIONS=ON -- 用于调试 - -DLLVM_ENABLE_EH=ON -- 如果您的应用程序使用C++异常,则启用此选项 - -DLLVM_ENABLE_RTTI=ON -- 如果您的应用程序使用C++ RTTI,则启用此选项
另请参阅上游文档:https://llvm.org/docs/CMake.html 注意,LLVM项目中的某些项目只能使用clang构建。我不会涉及到引导问题,但如果构建失败,则可以将项目列表从all缩小到以下子集:clangclang-tools-extracompiler-rtcross-project-testslibclibclclibcxxlibcxxabilibunwindlldlldbopenmpparallel-libspollypstl

1
我试图按照你的示例构建,但是出现了这个错误 /home/anon/Library/llvm-project/libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp:9:10: fatal error: 'utils/LibcTableGenUtil/APIIndexer.h' file not found,它基本上就是字面意思。在utils文件夹中没有名为HdrGen的子文件夹。 - Anon
1
@Anon - 你还遇到那个问题吗?在你发表评论之前,我不知道你是否接受了我的答案。值得一提的是,我确实测试了我的答案(Ubuntu 20.04,系统Clang 10编译器),并没有遇到那个问题。 - Alex Reinking
是的,我不知道发生了什么。我正在使用相对新鲜的Kubuntu 20.10最小安装版。在我完成构建之前,我已经接受了它,只是认为它是有效的。它可能是有效的,只是当我编译软件时,我运气最差。我将尝试进行全新的Manjaro安装,并查看能否在那里使其工作。 - Anon
1
@Anon - 如果有帮助的话,我刚刚又成功地尝试了相同的命令,并记录了终端输出在这里。第一个CMake命令输出的差异可能会有所帮助。 - Alex Reinking

1

以下是我采用的步骤,来源在此

mkdir llvm
cd llvm

git clone https://github.com/llvm/llvm-project.git .
git clone https://github.com/KhronosGroup/SPIRV-LLVM-Translator.git
git clone https://github.com/intel/opencl-clang.git
git clone https://github.com/KhronosGroup/SPIRV-Headers.git ./llvm/projects/SPIRV-Headers
git clone https://github.com/intel/vc-intrinsics.git ./llvm/projects/vc-intrinsics

mkdir build
cd build

cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=”X86″ -DLLVM_ENABLE_PROJECTS=”clang” -DLLVM_EXTERNAL_PROJECTS=”llvm-spirv;opencl-clang” -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=”../SPIRV-LLVM-Translator” -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=”../opencl-clang” ../llvm

make opencl-clang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接