使用 cmake 将 LLVM 添加到项目
Add LLVM to project using cmake
我正在尝试将 LLVM 添加到 cmake 项目中,使用 cygwin 作为编译器。我从 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。
正如 Marco A. 在评论中指出的那样,问题是缺少库。这个 link 帮助解决了这个问题,现在一切似乎都在正常工作。
谢谢。
这里的答案是陈旧的。
在较新版本的 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 上遇到问题,请按照
中的建议安装源包而不是二进制包
如果您遇到此错误:
CommandLine Error: Option 'help-list' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
将 target_link_libraries()
中的 ${llvm_libs}
替换为 LLVM
你可以看到 this github thread
我正在尝试将 LLVM 添加到 cmake 项目中,使用 cygwin 作为编译器。我从 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。
正如 Marco A. 在评论中指出的那样,问题是缺少库。这个 link 帮助解决了这个问题,现在一切似乎都在正常工作。
谢谢。
这里的答案是陈旧的。
在较新版本的 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 上遇到问题,请按照
如果您遇到此错误:
CommandLine Error: Option 'help-list' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
将 target_link_libraries()
中的 ${llvm_libs}
替换为 LLVM
你可以看到 this github thread