10

私は、標準ディストリビューションから例の 1 つ、つまり BrainF を構築しようとしていますが、成功していません。

examples/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 からバックポートしました)。

4

2 に答える 2

4

このスレッドは、AddLLVM を取得するのに役立ちました: cmake "include" コマンドの場合、ファイルとモジュールの違いは何ですか?

その上、手動で設定した後、「llvm ライブラリのリストにライブラリ `jit' が見つかりません」という問題があります。エラーの全文:

$ 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)
于 2012-08-13T12:54:58.930 に答える