cmakeの使い方
cmakeはクロスプラットフォームなconfigureだ.簡単な日本語の解説は http://fseek.exblog.jp/5637217 にもある.使い方は
- CMakeList.txtというファイルにコンパイル(make)したいプログラムの情報を書く
- cmake . (最後の"."を忘れないこと)
- make
で目的のプログラムのコンパイルを行うことができる.windowsでは最後のmakeコマンドの変わりにcmakeの生成したhoge.slnをVisualStudioでコンパイルする.より詳しい使い方とCMakeList.txtの記述方法を以下の例で説明する.
hello.c
以下のhello.cをコンパイルしたい場合は
/* hello.c */ #include <stdio.h> int main(void) { printf("Hello, World.\n"); return(0); }
CMakeList.txtは以下の1行だけでいい
ADD_EXECUTABLE(hello hello.c)
CMakeList.txtをhello.cと同じディレクトリに置いて,そのディレクトリで
cmake .
とコマンドを実行すると以下のようになる.
共有ライブラリ (shared library)
共有ライブラリ (shared library)を作りたい場合は以下のようにする.
以下のlibhellolib.c を例にする.
/* libhellolib.c - */ #include <stdio.h> void hello(void) { printf("Hello, library world.\n"); }
CMakeList.txtは以下の1行だけでいい
ADD_LIBRARY(hellolib SHARED libhellolib.c )
libhellolib.soがmakeするとできる."lib"がファイル名の先頭に自動的につく点に注意しよう.
(http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/more-examples.html#AEN343を参考にした)
共有ライブラリ (shared library)のリンク
libhellolib.soを別プログラムから呼んでみよう.以下のようにする.
/* libhellolib.h */ void hello(void);
/* demo_use.c -- "hello" ルーチンを直接使用する方法を示します */ #include "libhellolib.h" int main(void) { hello(); return 0; }
これをlibhellolib.soとリンクしてコンパイルするためのCMakeList.txtは以下のようになる
ADD_EXECUTABLE(demo_use demo_use.c ) TARGET_LINK_LIBRARIES(demo_use hellolib)
projct名を記述することもできる
PROJECT(HelloWorld) ADD_EXECUTABLE(demo_use demo_use.c ) TARGET_LINK_LIBRARIES(demo_use hellolib)
さらに細かいオプション等の説明が以下にある
http://yosilove.blog.shinobi.jp/Entry/865/
cmakeその他
- wiki http://www.cmake.org/Wiki/CMake
- subdirの使い方の例 http://www.cmake.org/HTML/Examples.html
- eclipseでCMakeLists.txtを編集するためのプラグインがあるようだ http://www.cthing.com/CMakeEd.asp
- automake/autotools/autoconf からの変換ができるようだhttp://www.cmake.org/Wiki/CMake#Converters_from_other_buildsystems_to_CMake