2012-08-13 17 views
8

Estoy tratando de construir uno de los ejemplos de la distribución estándar, es decir, BrainF y no he tenido éxito.Edificio LLVM ejemplo

Hice mi copia de ejemplos/BrainF e intento ejecutar cmake desde este directorio. Inicialmente CMakeLists.txt veía así:

set(LLVM_LINK_COMPONENTS jit bitwriter nativecodegen interpreter) 

add_llvm_example(BrainF 
    BrainF.cpp 
    BrainFDriver.cpp 
) 

cmake se quejó de add_ *. He leído a través http://llvm.org/docs/CMake.html#embedding y decidió añadir un poco de preludio a 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}) 

Entonces cmake se quejaron del hecho de que podría't realizar find_package(LLVM) y sugirió que buscar LLVMConfig.cmake o llvm-config.cmake. Lo más parecido que encontré se estableció en /usr/src/llvm/cmake/modules/LLVM-Config.cmake, así que configuré CMAKE_PREFIX_PATH=/usr/src/llvm/cmake/modules/ e hice el enlace suave LLVMConfig.cmake a LLVM-Config.cmake.

Entonces cmake se quejó de esta manera: "include could not find load file: AddLLVM". Si codigo la ruta completa para incluir AddLLVM.cmake, el problema incluye lo que existe dentro de AddLLVM.cmake, por lo que no parece ser la forma correcta de hacer las cosas.

Mi entorno es Xubuntu 12.04 y llvm + clang 3.1 (recibí el paquete deb de algún ppa, backport de Debian).

+0

'Me hizo que mi copia de ejemplos/brainf y tratando de ejecutar cmake de esta dir.' ¿Por qué has hecho eso? Si desea configurar un proyecto que use LLVM, consulte http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project – arrowd

+0

"¿Por qué hizo eso? Si desea configurar un proyecto "- Solo intento construir uno de sus ejemplos. Y no quiero hacer esto dentro de los directorios del sistema (donde tendré que usar sudo). La actualización que mencioné en mi respuesta a la publicación a continuación proviene exactamente de la página que ha señalado. Simplemente no utilicé explícitamente llvm_map_components_to_libraries y dejé su conjunto (LLVM_LINK_COMPONENTS ...) y add_llvm_example (...) que (como sugiere el texto de error) usa explicit_map_components_to_libraries que a su vez hacen casi lo mismo, supongo. –

Respuesta

4

Este hilo me ayudó a AddLLVM: For the cmake "include" command, what is the difference between a file and a module?

Además, ahora configurar manualmente después de que tengo un problema: “Biblioteca` JIT' no se encuentra en la lista de las bibliotecas llvm”. El texto completo de error:

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