まず、CMakeとはどんなものか? 大雑把に言うとMakefile等を生成してくれる、Automakeのようなツール。Automakeとの大きな違いは、make以外のビルドシステムにも対応している点。CMakeはEclipseのプロジェクトも生成できたりする…、らしい。Makefile以外生成した事無いけど。
具体的なCMakeへの指示はテキストファイルに書き連ねる。ファイル名はCMakeLists.txt固定で、cmakelists.txtのような大文字小文字の違いも許されない(Windows系なら許されるかな?)。
簡単な例を示そう。
以下のような構成のソースファイル群から、fooという名前の実行ファイルを作りたい場合。
test/ +- CMakeLists.txt +- src/ | +- main.c | +- sub1.c | +- sub2.c +- include/ +- sub1.h +- sub2.h +- common.h最低限のCMakeLists.txtの中身は、以下のようになる。
cmake_minimum_required(VERSION 2.8)1行目はCMakeのバージョン指定。2.8以上を使えという意味。指定しないとWarningが出る。指定しなくても目の前で動かなくなることはないだろうけど、とりあえず今使ってるバージョンを指定しておいた方が無難。
include_directories(include)
add_executable(foo src/main.c src/sub1.c src/sub2.c)
2行目は、インクルードするヘッダファイルの置き場所指定。上の例だと、includeというディレクトリをヘッダの探索パスに追加する。
3行目は、生成する実行ファイルとそのソースファイルの指定。src/main.c, src/sub1.c, src/sub2.cの3つからfooという実行ファイルを作れという意味。
では、実際にCMakeを起動する…、その前に、ビルド専用のディレクトリを作った方がいい。CMakeLists.txtがあるディレクトリでも動かないことはないのだが、CMakeは非常に多くのファイルを生成するので、バージョン管理しているディレクトリで実行したりすると、とっ散らかって面倒なことになる。
以下は、testの兄弟ディレクトリbuild_testを作って、そこでビルドする実行例。
% pwdCMakeの仕事はMakefileを作ったらおしまい。実際のビルドはmakeで行う。
/xx/xx/test
% mkdir ../build_test
% cd ../build_test
% cmake ../test
% make
0 件のコメント:
コメントを投稿