【发布时间】:2012-08-13 11:33:55
【问题描述】:
我正在尝试从标准发行版构建一个示例,即 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 找不到加载文件:AddLLVM”。如果我对包含 AddLLVM.cmake 的整个路径进行硬编码,则问题出在 AddLLVM.cmake 中存在的包含问题上,因此这似乎不是完成工作的正确方法。
我的环境是 Xubuntu 12.04 和 llvm+clang 3.1(从一些 ppa 获取 deb 包,从 Debian 反向移植)。
【问题讨论】:
-
I made my copy of examples/BrainF and trying to run cmake from this dir.你为什么这样做?如果您希望设置使用 LLVM 的项目,请参阅 llvm.org/docs/CMake.html#embedding-llvm-in-your-project -
“你为什么这样做?如果你想建立项目”——我只是尝试建立他们的一个例子。而且我不想在系统目录中执行此操作(我必须使用 sudo)。我对以下帖子的回答中讨论的更新完全来自您指向的页面。我只是没有明确使用 llvm_map_components_to_libraries 并留下了他们的 set(LLVM_LINK_COMPONENTS ...) 和 add_llvm_example(...) (正如错误文本所暗示的那样)使用 explicit_map_components_to_libraries 反过来做几乎相同,我猜。