将Clang作为独立项目构建,取决于LLVM二进制文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Clang作为独立项目构建,取决于LLVM二进制文件相关的知识,希望对你有一定的参考价值。
我想从源代码构建Clang,而不是LLVM。 Clang将LLVM作为硬依赖项,但是与其从源代码构建LLVM,不应该依赖于预先安装(预构建)的LLVM二进制文件。
我知道这是可能的,因为clang具有以下CMake标志-
- LLVM_DIR
- LLVM_LIBRARY_DIR
- LLVM_MAIN_INCLUDE_DIR
- LLVM_TOOLS_BINARY_DIR
并且Clang的CMakeLists.txt也有规定要依赖以前安装的LLVM版本。 (https://github.com/llvm-mirror/clang/blob/master/CMakeLists.txt#L14)
我从这里获得了LLVM 9二进制和Clang 9源代码-http://releases.llvm.org/download.html#9.0.0
我正在尝试使用-构建Clang
cmake -DLLVM_BUILD_TOOLS=Off -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host ../
但是,我收到以下错误-
CMake Error at /home/reik/Downloads/clang/lib/cmake/llvm/AddLLVM.cmake:467 (add_library):
add_library cannot create target "SampleAnalyzerPlugin" because an imported
target with the same name already exists.
Call Stack (most recent call first):
/home/reik/Downloads/clang/lib/cmake/llvm/AddLLVM.cmake:665 (llvm_add_library)
lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt:6 (add_llvm_library)
CMake Error at /home/reik/Downloads/clang/lib/cmake/llvm/AddLLVM.cmake:585 (target_link_libraries):
Cannot specify link libraries for target "SampleAnalyzerPlugin" which is
not built by this project.
Call Stack (most recent call first):
/home/reik/Downloads/clang/lib/cmake/llvm/AddLLVM.cmake:665 (llvm_add_library)
lib/Analysis/plugins/SampleAnalyzer/CMakeLists.txt:6 (add_llvm_library)
在上面的代码片段中,/ home / reik / Downloads / clang是LLVM二进制文件。 (注意,LLVM二进制文件随Clang二进制文件一起提供)
似乎因为LLVM二进制文件安装了Clang,所以add_library
中存在某种冲突,因为某些事情已经存在(在此处找到相关线程-http://lists.llvm.org/pipermail/llvm-dev/2016-November/107616.html)->所以我想我缺少某种形式Clang作为独立项目构建时的配置步骤。
或者也许我只需要一个没有安装clang的LLVM二进制文件,但是我无法在LLVM的官方网站上找到任何类似的东西。
有人可以帮我吗?
我认为您为cmake提供了错误的路径。我认为您指向的是名为clang的子目录。您应该改为指向llvm-project-llvmorg-9.0.0 / llvm本身。
运行以下内容:
cmake -DLLVM_BUILD_TOOLS=Off -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD=host $LLVM_SRC
以上是关于将Clang作为独立项目构建,取决于LLVM二进制文件的主要内容,如果未能解决你的问题,请参考以下文章
clang 3.1 在 Ubuntu 12.04 上构建的二进制文件无法使用 gdb 进行调试