まずはcmakeをインストール
Macの場合
https://cmake.org/download/ でdmg形式をダウンロードして、インストール。
コマンドラインを通すには、 sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
※GUI版を起動し、メニューの Tools -> How To Install For Command Line Use で説明が出てくる。
Ubuntu系Linuxの場合
apt-get -y install cmake
何もしない makeの作成
とりあえず空ファイルの CMakeLists.txt
を作って、UNIX Makefileを作ってみる。
$ touch CMakeLists.txt
$ cmake -G "Unix Makefiles"
-G
はGeneratorの指定。あらかじめ使える種類は決まっている。--help
を参照。
上記実行後、以下のファイルが出来上がっている。
CMakeCache.txt
CMakeFiles
CMakeLists.txt
Makefile
cmake_install.cmake
make all
とかが動く状態になっている。
Hello Worldを実行するCのプログラム用のCMakeを作ろう。
ソースフィルは、hello.c
。実行ファイルは、hello
にしよう。
CMakeLists.txtに以下の記述をする。
project (Hello C)
add_executable(hello hello.c)
projectの二番目以降は言語を指定。C++だったらCXX。複数なら空白区切で並べる。
で、先ほどと同じように cmake後にmakeすれば
もう出来上がり。
$ cmake -G "Unix Makefiles"
$ make
Scanning dependencies of target hello
[ 50%] Building C object CMakeFiles/hello.dir/hello.c.o
[100%] Linking C executable hello
[100%] Built target hello
$ ./hello
Hello CMake!
add_executable の 引数に、ソースファイルを増やしていけば、複数のソースからビルドできるようになる。
add_executable(hello hello.c hello2.c hello3.c)
cmakeに対するバージョンを要求することもできる。
cmake_minimum_required (VERSION 2.8)
buildというディレクトリを作って、そこからcmakeを叩くのが定石らしい。
rm -rf build
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make
といった感じでスクリプトを組む。
CMakeLists.txtに以下の記述をする。
set(CMAKE_C_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS "-Wall")
make verboseするには
set(CMAKE_VERBOSE_MAKEFILE TRUE)