首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建LLVM示例

构建LLVM示例
EN

Stack Overflow用户
提问于 2012-08-13 19:33:55
回答 2查看 7.2K关注 0票数 10

我正在尝试构建一个来自标准发行版的示例,即BrainF,但没有成功。

我制作了examples/BrainF的副本,并尝试从这个目录运行cmake。最初,CMakeLists.txt看起来像这样:

代码语言:javascript
复制
set(LLVM_LINK_COMPONENTS jit bitwriter nativecodegen interpreter)

add_llvm_example(BrainF
  BrainF.cpp
  BrainFDriver.cpp
  )

cmake抱怨add_*。我通读了http://llvm.org/docs/CMake.html#embedding,并决定为CMakeLists.txt添加一些前奏:

代码语言:javascript
复制
find_package(LLVM)

# Define add_llvm_* macro's.
include(AddLLVM)

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

然后cmake抱怨它不能执行find_package(LLVM),并建议查找LLVMConfig.cmake或llvm-config.cmake。我在/usr/src/llvm/cmake/modules/LLVM-Config.cmake下找到的最接近的文件,所以我设置了CMAKE_PREFIX_PATH=/usr/src/llvm/cmake/modules/并将LLVMConfig.cmake软链接到LLVM-Config.cmake。

然后cmake这样抱怨:“include找不到加载文件:AddLLVM”。如果我将整个路径硬编码为包含AddLLVM.cmake,那么问题就转到了AddLLVM.cmake中存在的includes上,所以它看起来不像是完成任务的正确方法。

我的环境是xubuntu12.04和Debian 3.1 (从一些llvm+clang得到了deb包,从Debian得到了backport )。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 09:08:37

在llvm 11.0。

我试过了,它起作用了。

可能需要使用add_llvm_executable命令才能与LLVM_LINK_COMPONENTS链接

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.4.3)

find_package(LLVM REQUIRED CONFIG)
project(BrainF)

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(AddLLVM)

set(LLVM_LINK_COMPONENTS
  BitWriter
  Core
  ExecutionEngine
  MC
  MCJIT
  Support
  nativecodegen
  )

add_llvm_executable(BrainF
  BrainF.cpp
  BrainFDriver.cpp
  )

附注:更新。2020.11.1。

more info

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.4.3)
project(BrainF)

find_package(LLVM 11 REQUIRED CONFIG)
add_definitions(${LLVM_DEFINITIONS})
include_directories(${LLVM_INCLUDE_DIRS})

message(STATUS "LLVM VERSION : ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

add_executable(BrainF
  BrainF.cpp
  BrainFDriver.cpp
)

llvm_map_components_to_libnames(llvm_libs support core irreader)

target_link_libraries(BrainF llvm_libs)
票数 2
EN

Stack Overflow用户

发布于 2012-08-13 20:54:59

这个帖子帮助我获得了AddLLVM:For the cmake "include" command, what is the difference between a file and a module?

此外,现在在手动设置后,我遇到了问题:“Library` `jit‘not found in list of llvm Library”。error的全文:

代码语言:javascript
复制
$ cmake .
CMake Error at /usr/src/llvm/cmake/modules/LLVM-Config.cmake:141 (message):
  Library `jit' not found in list of llvm libraries.
Call Stack (most recent call first):
  /usr/src/llvm/cmake/modules/LLVM-Config.cmake:54 (explicit_map_components_to_libraries)
  /usr/src/llvm/cmake/modules/LLVM-Config.cmake:47 (explicit_llvm_config)
  /usr/src/llvm/cmake/modules/AddLLVM.cmake:86 (llvm_config)
  /usr/src/llvm/cmake/modules/AddLLVM.cmake:112 (add_llvm_executable)
  CMakeLists.txt:17 (add_llvm_example)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11933485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档