CMakeでFindHoge.cmakeの格納場所をハードコーディングしないで指定するには
CMakeで環境非依存なビルドファイルを作ろうとしています。
find_package()でLLVMやffiのConfig.cmakeフィアルを利用しようとしたところ、下記のようなエラーが出てしまいました。set()を利用してパスを指定するとエラーは消えますが、CMakeLists.txtに環境依存なパスがハードコードしており、当初の目的を達成できません。
ハードコードなしにConfig.cmakeファイルの格納場所を指定する方法を教えていただきたいです。
set(LLVM_DIR ...)しない場合のエラー
CMake Error at src/CMakeLists.txt:5 (find_package):
Could not find a package configuration file provided by "LLVM" with any of
the following names:
LLVMConfig.cmake
llvm-config.cmake
Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set
"LLVM_DIR" to a directory containing one of the above files. If "LLVM"
provides a separate development package or SDK, be sure it has been
installed.
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(sample)
# 明示的にLLVM_DIRを指定するとエラーが消えるが環境依存になってしまう
set(LLVM_DIR /usr/local/Cellar/llvm/3.5.1/share/llvm/cmake)
find_package(LLVM REQUIRED CONFIG)
OS X Yosemite環境, HomeBrewでインストールしたllvmを指定した場合のCMakeLists.txtです。
MintLinuxでは/usr/share/llvm-3.5/cmake/に格納されているため、書き換えが必要でした。バージョンの変化も考えると他の方法があると思いました。
5/15 19:00頃追記
cmake実行時に以下のように指定することで外出しが可能でした。
cmake -D LLVM_DIR=/path/to/LLVMConfig.cmake