2012-08-13 118 views
8

我正在嘗試從標準分發中構建一個示例,即BrainF並沒有成功。構建LLVM示例

我做了我的副本的例子/ BrainF,並試圖從這個目錄運行cmake。最初CMakeLists.txt看起來像這樣:

set(LLVM_LINK_COMPONENTS jit bitwriter nativecodegen interpreter) 

add_llvm_example(BrainF 
    BrainF.cpp 
    BrainFDriver.cpp 
) 

cmake抱怨add_ *。我通過閱讀http://llvm.org/docs/CMake.html#embedding,並決定一些前奏添加到的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}) 

然後cmake的抱怨是,它便無法執行find_package(LLVM),並建議尋找LLVMConfig.cmake或LLVM,config.cmake。我發現最接近的東西放在/usr/src/llvm/cmake/modules/LLVM-Config.cmake下,所以我設置了CMAKE_PREFIX_PATH=/usr/src/llvm/cmake/modules/,並將軟鏈接LLVMConfig.cmake設置爲LLVM-Config.cmake。

然後cmake這樣抱怨:「包含找不到加載文件:AddLLVM」。如果我對整個路徑進行硬編碼以包含AddLLVM.cmake,則問題將包括AddLLVM.cmake中存在的問題,因此它看起來不是完成任務的正確方法。

我的環境是Xubuntu 12.04和llvm + clang 3.1(從某些ppa獲得deb包,從Debian返回)。

+0

'我做了我的副本的例子/ BrainF,並試圖從這個目錄運行cmake.'你爲什麼這樣做?如果您希望設置使用LLVM的項目,請參閱http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project – arrowd 2012-08-13 17:46:03

+0

「你爲什麼這樣做?如果你想建立項目「 - 我只是試圖建立他們的一個例子。而且我不想在系統目錄中執行此操作(我必須使用sudo)。 我在下面的帖子回答中討論的更新來自您指定的頁面。我只是沒有明確地使用llvm_map_components_to_libraries,而是留下了它們的設置(LLVM_LINK_COMPONENTS ...)和add_llvm_example(...),我認爲這(如錯誤文本所示)使用explicit_map_components_to_libraries,這反過來也做幾乎相同。 – 2012-08-13 20:25:54

回答

4

這個線程幫助我得到AddLLVM:For the cmake "include" command, what is the difference between a file and a module?

再說,現在手動設置後,我有問題:「圖書館`JIT」在LLVM庫列表未找到」。錯誤全文:

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