CMakeのExternalProjectで外部プロジェクトのビルドシステムに環境変数を渡す
はじめに
CMake無限にわからん。 小ネタですが、調査したことは、まとめていきたいと思います。
ExternalProject_Add
CMakeで外部プロジェクトを取り込むには、ExternalProject
を使います。
まずは、ExternalProjectライブラリをincludeします。
# Include External Library include(ExternalProject)
次にExternalProject_Add
で外部プロジェクトを取り込みます。
ExternalProject_Add( ext_project # Name for custom target PREFIX ${ext_build_dir} # Root dir for entire project SOURCE_DIR ${ext_src_dir} BINARY_DIR ${ext_src_dir} # This particular build system is invoked from the root CONFIGURE_COMMAND "" # Skip configuring the project, e.g. with autoconf BUILD_COMMAND make INSTALL_COMMAND "" # This particular build system has no install command BUILD_BYPRODUCTS ${ext_build_dir}/lib/libext.a )
今回はローカルのソースファイルを使用しますが、gitレポジトリやダウンロードしてきたファイルを使用することもできます。
外部プロジェクトのビルドシステムは、Makefile
なので、BUILD_COMMAND
はmake
とします。
外部Makefileに環境変数を渡す
このMakefileに環境変数を追加で渡したい場合、次のようにすれば良いです。
BUILD_COMMAND make PREFIX=${ext_build_dir} LIB_DIR=${LIB_DIR}
もう少しスマートなやり方があれば良いのですが…。
Makefileの方は、次のようにしておいて、単体でもビルドできるようにしています。
PREFIX ?= . LIB_DIR ?= $(PREFIX)/lib