cmake - 构建 LLVM 时的 Cmake
问题描述
尝试使用 CMake 构建 llvm 项目 LLVM 项目,它给了我一个我自己无法解决的错误。
为此,我使用的是 Ubuntu 虚拟机(版本 18.04),并且正在尝试使用“ninja”构建项目。
我尝试使用以下命令构建它(LLVM Builder Guide 说要使用,https://llvm.org/docs/GettingStarted.html)
git clone https://github.com/llvm/llvm-project.git
cd llvm-project/
mkdir build && cd build
cmake -DLLVM_ENABLE_PROJECTS='all' -DCMAKE_BUILD_TYPE=Release -G 'Ninja' ../llvm
在最后一个命令中,我使用第一个标志来下载所有项目,而第二个标志是因为我不需要调试工具。
最后一个命令多次给我以下错误,目标不同:
CMake Error at /usr/share/cmake-3.10/Modules/ExternalProject.cmake:2759 (get_property):
get_property could not find TARGET llgo. Perhaps it has not yet been
created.
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/ExternalProject.cmake:3032 (_ep_add_configure_command)
/home/enrique/Escritorio/llvm-project/llgo/CMakeLists.txt:200 (externalproject_add)
/home/enrique/Escritorio/llvm-project/llgo/CMakeLists.txt:219 (add_libgo_variant)
这个库错误:
-- LLD version: 10.0.0
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find LibEdit (missing: libedit_INCLUDE_DIRS libedit_LIBRARIES)
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/home/enrique/Escritorio/llvm-project/lldb/cmake/modules/FindLibEdit.cmake:54 (find_package_handle_standard_args)
/home/enrique/Escritorio/llvm-project/lldb/cmake/modules/LLDBConfig.cmake:104 (find_package)
/home/enrique/Escritorio/llvm-project/lldb/CMakeLists.txt:21 (include)
-- Configuring incomplete, errors occurred!
See also "/home/enrique/Escritorio/llvm-project/build/CMakeFiles/CMakeOutput.log".
See also "/home/enrique/Escritorio/llvm-project/build/CMakeFiles/CMakeError.log".
解决方案
我有同样的问题,尝试卸载 golang 编译器(因为我不需要 llvm 支持 go);无济于事。我不是 LLVM 专家,所以这可能不是规范的解决方案,但这是我解决它的方法:
我换了
-DLLVM_ENABLE_PROJECTS='全部'
经过
-DLLVM_ENABLE_PROJECTS="proj1;proj2;proj3"
project is enabled$
我通过在cmake
输出中搜索并删除了 llgo 项目来构建列表“proj1;proj2;proj3” 。我有一个类似的列表:
-- clang project is enabled
-- clang-tools-extra project is enabled
-- compiler-rt project is enabled
-- debuginfo-tests project is enabled
-- libclc project is enabled
-- libcxx project is enabled
-- libcxxabi project is enabled
-- libunwind project is enabled
-- lld project is enabled
-- lldb project is enabled
-- llgo project is enabled
-- openmp project is enabled
-- parallel-libs project is enabled
-- polly project is enabled
-- pstl project is enabled
然后用一些vim宏/你掌握的任何东西构建以下列表(注意:那里没有llgo):
clang;clang-tools-extra;compiler-rt;debuginfo-tests;libclc;libcxx;libcxxabi;libunwind;lld;lldb;openmp;parallel-libs;polly;pstl
然后编译llvm成功\o/
推荐阅读
- android - 用户使用firebase登录后,如何将nav_header的TextView更改为用户名?
- python - Kmeans:将数据点重新分配到第二近的?
- php - 返回雄辩的变化而不更新 laravel 上的记录
- node.js - 如何使用 Firebase 创建 nodeJS API
- json - 如何创建这种类型的 json
- java - 来自多个身份验证服务器的 OAuth2/OIDC 客户端授权的额外身份验证步骤
- r - 如何在 R 中的这种情况下应用全局变量
- java - Java - 如何在 BubbleSorting 之后将值打印为单词?
- javascript - 尝试批量下载时如何修复 Google 地球引擎中的“无效 GeoJSON 几何”错误?
- javascript - 在一条记录中聚合多个泛型