CMakeとは

設定ファイルに従ってMakefileを生成してくれるツール. その他にもCodeBlocksとかVisualStudioとかEclipseのプロジェクトファイルの生成もできる. 便利ですねー.

使い方

基本

基本的にはCMakeLists.txtというファイルに1行ごとに設定を書いて, cmakeコマンドを実行するとMakefileが生成される.
cmake .
よく使う設定コマンドは以下のようなものがある.
cmake_minimum_required(VERSION 2.6) 要求するCMakeのバージョン
(これ以前のバージョンのCMakeではMakefileの生成ができない)
project([プロジェクト名]) プロジェクト名
include_directories([パス1] [パス2] ... [パスn]) インクルードパスの追加
link_directories([パス1] [パス2] ... [パスn]) ライブラリパスの追加
add_executable([実行ファイル名] [ソース1] [ソース2] ... [ソースn]) ソースファイル群とそれらから生成される実行ファイル
add_definitions(-D[マクロ1] -D[マクロ2] ...) マクロ設定
target_link_libraries([実行ファイル名] [ライブラリ1] [ライブラリ2] ... [ライブラリn]) 実行ファイルにリンクするライブラリ(lib接頭語を除いた名前)
set([CMake環境変数] [値]) CMake環境変数に値をセット
cmakeコマンドを実行する時に-D[CMake環境変数]=[値]としてもCMake環境変数を設定可能.
定義済みのCMake環境変数は以下のようなものがある. CMake環境変数の値を変更することでもCMakeの動作を変更できる.
CMAKE_BUILD_TYPE ビルドの形式(DebugとかReleaseとか)
CMAKE_C_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG
Debug時にC/C++ソースに適用されるコンパイルオプション
CMAKE_C_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE
Release時にC/C++ソースに適用されるコンパイルオプション
CMAKE_INSTALL_PREFIX インストール先ディレクトリ指定

環境変数を使う

環境変数を参照する場合は$ENV{}を使う.
$ENV{[環境変数]}
例えばPATHを参照したかったら
$ENV{PATH}

サンプル

例えばこんなCMakeLists.txtを作って, ソースが格納されているディレクトリに入れとく. 趣味で使う程度なら以下のコマンドを設定しとけばおk.
ただ, これだとReleaseビルドとDebugビルドでいちいちCMAKE_BUILD_TYPEを変更してcmakeコマンドでMakefileを再構成する必要があって面倒. もっと, いい方法ないかな. -Dオプションで指定してもいいけど・・・さ
cmake_minimum_required(VERSION 2.6)

# build type
set(CMAKE_BUILD_TYPE Release)

# compile option (Debug) 
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_C_FLAGS_DEBUG "-g")

# compile option (Release)
set(CMAKE_CXX_FLAGS_RELEASE "-W -Wall -O3")
set(CMAKE_C_FLAGS_RELEASE "-W -Wall -O3")

project(hoge)
include_directories(/usr/include /usr/local/include/opencv)
link_directories(/usr/lib/GL /usr/local/lib)
add_executable(hoge main.cpp a.cpp b.cpp c.cpp)
target_link_libraries(hoge m GL GLU glut cv highgui)


カウンタ -
最終更新:2010年12月29日 23:02