Добавьте LLVM в проект с помощью cmake

Я пытаюсь добавить LLVM в проект cmake, используя cygwin в качестве компилятора. Я скачал LLVM из установщика cygwin (только что установил все пакеты, связанные с 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 в моем проекте.


person anonra    schedule 16.06.2015    source источник
comment
Вы должны выяснить библиотеки для компонентов, которые вам нужны. Взгляните на stackoverflow.com/a/25783251/1938163.   -  person Marco A.    schedule 16.06.2015
comment
возможный дубликат ошибки связывания инструментов Cmake и clang (за пределами исходное дерево)   -  person Mark Garcia    schedule 16.06.2015


Ответы (2)


Ответ здесь устарел.
В более новых версиях LLVM есть включенный инструмент для включения LLVM в проект CMake.
См. документацию как встроить LLVM в свой проект

Таким образом, у вас будет это в вашем проекте 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

замените ${llvm_libs} в target_link_libraries() на LLVM, вы можете увидеть эту ветку github

person Narice    schedule 25.05.2019

Как указал Марко А. в комментариях, проблема заключалась в отсутствующих библиотеках. Эта ссылка помогла решить проблему, и теперь все работает нормально. https://stackoverflow.com/a/25783251/1938163

Спасибо.

person anonra    schedule 16.06.2015
comment
Не за что :) Отметьте это как ответ и, возможно, расширьте решение, если хотите. - person Marco A.; 16.06.2015