2012-08-13 43 views
8

Tôi đang cố gắng xây dựng một trong các ví dụ từ phân phối chuẩn, cụ thể là BrainF và đã không thành công.Xây dựng ví dụ LLVM

Tôi đã sao chép các ví dụ/BrainF và cố chạy cmake từ thư mục này. Ban đầu, CMakeLists.txt trông giống như sau:

set(LLVM_LINK_COMPONENTS jit bitwriter nativecodegen interpreter) 

add_llvm_example(BrainF 
    BrainF.cpp 
    BrainFDriver.cpp 
) 

cmake phàn nàn về add_ *. Tôi đọc qua http://llvm.org/docs/CMake.html#embedding và quyết định thêm một số khúc dạo đầu cho 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}) 

Sau đó cmake phàn nàn về thực tế là nó could't thực hiện find_package(LLVM) và đề nghị tìm kiếm LLVMConfig.cmake hoặc llvm-config.cmake. Điều gần nhất mà tôi tìm thấy nằm dưới /usr/src/llvm/cmake/modules/LLVM-Config.cmake vì vậy tôi đặt CMAKE_PREFIX_PATH=/usr/src/llvm/cmake/modules/ và tạo liên kết mềm LLVMConfig.cmake thành LLVM-Config.cmake.

Sau đó, cmake phàn nàn theo cách này: “bao gồm không thể tìm thấy tệp tải: AddLLVM”. Nếu tôi hardcode toàn bộ đường dẫn để bao gồm AddLLVM.cmake vấn đề đi để bao gồm mà tồn tại bên trong AddLLVM.cmake vì vậy nó không có vẻ giống như cách đúng để hoàn thành công việc.

Môi trường của tôi là Xubuntu 12.04 và llvm + clang 3.1 (có gói deb từ một số ppa, cổng sau từ Debian).

+0

'Tôi đã sao chép các ví dụ/BrainF và cố chạy cmake từ thư mục này.' Tại sao bạn làm điều đó? Nếu bạn muốn thiết lập dự án, sử dụng LLVM, xem http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project – arrowd

+0

“Tại sao bạn làm điều đó? Nếu bạn muốn thiết lập dự án ”- tôi chỉ cố gắng xây dựng một ví dụ của họ. Và tôi không muốn làm điều này bên trong dirs hệ thống (nơi tôi sẽ phải sử dụng sudo). Bản cập nhật được thảo luận trong câu trả lời của tôi cho bài đăng dưới đây chính xác từ trang bạn đã chỉ ra. Tôi chỉ không sử dụng rõ ràng llvm_map_components_to_libraries và để lại tập hợp của chúng (LLVM_LINK_COMPONENTS…) và add_llvm_example (…) mà (như văn bản lỗi gợi ý) sử dụng phương thức clear_map_components_to_libraries, nó cũng gần như giống nhau, tôi đoán vậy. –

Trả lời

4

chủ đề này đã giúp tôi để có được AddLLVM: For the cmake "include" command, what is the difference between a file and a module?

Bên cạnh đó, bây giờ sau khi tự thiết lập tôi có vấn đề: “Thư viện 'JIT' không tìm thấy trong danh sách các thư viện llvm”. Toàn bộ văn bản lỗi:

$ 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) 
Các vấn đề liên quan