2012-08-13 54 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)