使用cmake将LLVM添加到项目中

时间:2015-06-16 12:32:30

标签: c++ cmake llvm llvm-c++-api llvm-3.0

我正在尝试使用cygwin作为编译器将LLVM添加到cmake项目中。我从cygwin的安装程序下载了LLVM(刚刚安装了所有与llvm相关的软件包)。文件在那里,但我不能在我的项目中包含LLVM。我尝试使用官方指南3.5.2(它安装的版本)和我的CMakeLists.txt看起来像

cmake_minimum_required(VERSION 3.2)
project(Lang)

find_package(LLVM REQUIRED CONFIG)

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


include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp)

add_executable(Lang ${SOURCE_FILES})

llvm_map_components_to_libnames(llvm_libs support core irreader)

# Link against LLVM libraries
target_link_libraries(Lang ${llvm_libs})

但是,我得到了一堆像这样的错误

enter image description here

我做错了吗?我想要做的就是在我的项目中使用LLVM。

2 个答案:

答案 0 :(得分:2)

正如Marco A.在评论中指出的那样,问题是缺少图书馆。此链接有助于解决问题,现在一切似乎都正常。 https://stackoverflow.com/a/25783251/1938163

谢谢。

答案 1 :(得分:1)

答案是过时的。
在较新版本的LLVM中,有一个包含的工具可将LLVM包含在CMake项目中。
请参阅how to embed LLVM in your project

的文档

因此,您将在项目CMakeLists.txt中找到它:

cmake_minimum_required(VERSION 3.4.3)
project(SimpleProject)

find_package(LLVM REQUIRED CONFIG)

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

# Set your project compile flags.
# E.g. if using the C++ header files
# you will need to enable C++11 support
# for your compiler.

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

# Now build our tools
add_executable(simple-tool tool.cpp)

# Find the libraries that correspond to the LLVM components
# that we wish to use
llvm_map_components_to_libnames(llvm_libs support core irreader)

# Link against LLVM libraries
target_link_libraries(simple-tool ${llvm_libs})

这应该有效。
如果您在Windows上遇到问题,请安装源软件包,而不要安装this thread

中建议的二进制软件包。

如果您遇到此错误:

CommandLine Error: Option 'help-list' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options

${llvm_libs}中的target_link_libraries()替换为LLVM 您可以看到this github thread