我正在尝试使用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})
但是,我得到了一堆像这样的错误
我做错了吗?我想要做的就是在我的项目中使用LLVM。
答案 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