2012-08-13 12 views
8

Próbuję zbudować jeden z przykładów ze standardowej dystrybucji, a mianowicie BrainF i nie udało się.Budowanie przykładu LLVM

Zrobiłem mój egzemplarz przykładów/BrainF i próbowałem uruchomić cmake z tego reż. Początkowo CMakeLists.txt wyglądało tak:

set(LLVM_LINK_COMPONENTS jit bitwriter nativecodegen interpreter) 

add_llvm_example(BrainF 
    BrainF.cpp 
    BrainFDriver.cpp 
) 

cmake narzekał na add_ *. Czytałem przez http://llvm.org/docs/CMake.html#embedding i postanowili dodać trochę preludium do CMakeLists.txt:

find_package(LLVM) 

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

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

Następnie CUpewnij narzekali na to, że mogłyśmy wykonać find_package(LLVM) i sugerowanej szukać LLVMConfig.cmake lub LLVM-config.cmake. Najbliższa rzecz, którą znalazłem, została umieszczona pod /usr/src/llvm/cmake/modules/LLVM-Config.cmake, więc ustawiłem CMAKE_PREFIX_PATH=/usr/src/llvm/cmake/modules/ i zrobiłem miękki link LLVMConfig.cmake do LLVM-Config.cmake.

Następnie cmake złożył skargę w następujący sposób: "include could not find load file: AddLLVM". Jeśli zakoduję całą ścieżkę, aby dołączyć AddLLVM.cmake problem przechodzi do zawiera, które istnieją wewnątrz AddLLVM.cmake, więc nie wydaje się, że jest to właściwy sposób na załatwianie spraw.

Moje środowisko to Xubuntu 12.04 i llvm + clang 3.1 (otrzymałem pakiet deb z jakiegoś ppa, backport z Debiana).

+0

'Zrobiłem kopię przykładów/BrainF i próbuje uruchomić cmake z tego dir.' Dlaczego to zrobiłeś? Jeśli chcesz skonfigurować projekt, który używa LLVM, zobacz http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project – arrowd

+0

"Dlaczego to zrobiłeś? Jeśli chcesz skonfigurować projekt "- po prostu staram się zbudować jeden z ich przykładów. I nie chcę tego robić w systemie dirs (gdzie będę musiał użyć sudo). Aktualizacja omawiana w mojej odpowiedzi na poniższy post pochodzi dokładnie od wskazanej strony. Po prostu nie użyłem jawnie llvm_map_components_to_libraries i opuściłem ich zestaw (LLVM_LINK_COMPONENTS ...) i add_llvm_example (...), który (jak sugeruje tekst błędu) używają explicite_map_components_to_libraries, które z kolei robią prawie to samo, jak sądzę. –

Odpowiedz

4

Wątek pomógł mi dostać AddLLVM: For the cmake "include" command, what is the difference between a file and a module?

Poza tym, teraz po ręcznym ustawieniu mam problem: „Biblioteka` JIT”nie został znaleziony na liście bibliotek LLVM”. Pełny tekst błędu:

$ 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)