我正在尝试从标准分发中构建一个示例,即 BrainF,但没有成功。
我制作了示例/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这样抱怨:“include could not find load file: AddLLVM”。如果我对包含 AddLLVM.cmake 的整个路径进行硬编码,则问题出在 AddLLVM.cmake 中存在的包含问题上,因此这似乎不是完成工作的正确方法。
我的环境是 Xubuntu 12.04 和 llvm+clang 3.1(从一些 ppa 获取 deb 包,从 Debian 反向移植)。