我正在尝试从标准分发中构建一个示例,即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返回)。
'我做了我的副本的例子/ BrainF,并试图从这个目录运行cmake.'你为什么这样做?如果您希望设置使用LLVM的项目,请参阅http://llvm.org/docs/CMake.html#embedding-llvm-in-your-project – arrowd 2012-08-13 17:46:03
“你为什么这样做?如果你想建立项目“ - 我只是试图建立他们的一个例子。而且我不想在系统目录中执行此操作(我必须使用sudo)。 我在下面的帖子回答中讨论的更新来自您指定的页面。我只是没有明确地使用llvm_map_components_to_libraries,而是留下了它们的设置(LLVM_LINK_COMPONENTS ...)和add_llvm_example(...),我认为这(如错误文本所示)使用explicit_map_components_to_libraries,这反过来也做几乎相同。 – 2012-08-13 20:25:54