Wiki内検索
最近更新したページ
2011-08-24
2010-05-18
2010-05-03
2010-02-18
2010-02-10
2010-02-09
2010-02-08
2010-02-07
2010-02-02
2009-12-24
2009-12-05
2009-07-05
2009-07-03
最新コメント
MenuBar1 by stunning seo guys
MenuBar1 by stunning seo guys
MenuBar1 by stunning seo guys
MenuBar1 by awesome things!
MenuBar1 by awesome things!
MenuBar1 by awesome things!
MenuBar1 by check it out
MenuBar1 by awesome things!
MenuBar1 by check it out
MenuBar1 by stunning seo guys
Menu
Programming Tips
タグ

cmake1

cmakeのチュートリアル


  • CMakeはautomakeのようにmakeファイルを自動で作成してくれるツール 
  • 複数のプログラムコードが複雑な木構造のディレクトリに置かれてる場合を想定してる
  • LinuxでもWindows環境でも使える(Win版はGUIになっててCMakeLists.txtも自動で作成)
CMakeを使うには
各ディレクトリに設定を書いたCMakeLists.txtを置き、
そのプロジェクトのルートとなるディレクトリで cmake . とコマンドする
とmakefileとCMakeFilesが作成される
makeの種類を指定するときは
cmake -G <MSYS> .


本家資料
http://www.cmake.org/HTML/Documentation.html
wiki
http://www.cmake.org/Wiki/CMake

ルートディレクトリだけの設定


このチュートリアルでは木構造の構成のプロジェクトの場合、出発点となるディレクトリをルートと呼んでいる

プロジェクト名の指定

まずルートとなるディレクトリに置くCMakeLists.txtに

project(プロジェクト名)

という設定をする

このルートディレクトリは
PROJECT_SOURCE_DIR
または
PROJECT_BINARY_DIR
マクロで指定される



ディレクトリごとの設定


サブディレクトリを指定する


ディレクトリ内にさらにCMakeFilesのあるサブディレクトリがあればSUBDIRSで指定する

例えばhogeディレクトリ内にsrc1とsrc2のディレクトリがあり
そこにもCMakeFiles.txtを設定するなら

hoge内のCMakeFiles.txtに

SUBDIRS(src1 src2)

と書く

実行ファイルの作成

実行ファイルを作成するにはadd_executableを使う

add_executable (実行ファイル名 リンクさせるファイル)

例えば
g++ -o hoge main.cc
と同じことをcmakeでさせるには
add_executable(hoge main.cc)
となる

komicaという実行ファイルをmain.ccとkomica.ccから作るには
add_executable (komica main.cc subdir/komica.cc)
とする

マクロ変数

設定

set (SUB sublib)

使い方

${}で囲む
include_directories ("${PROJECT_SOURCE_DIR}/${SUB}")
今までのマクロに追加するには
set (SUB ${SUB} sublib2)



ルートがあり、その中にmain.ccとsubdirフォルダがあり、そこにkomica.ccとkomica.hがある場合
project(komica)
include_directories ("${PROJECT_BINARY_DIR}/subdir")
add_executable (komica main.cc subdir/komica.cc)


ヘッダーファイルの検索パス指定 (includeディレクトリ)

そのプログラムがincludeさせたいヘッダーファイルを検索する場所(パス)を指定するには

include_directories(dir1 dir2)

とする

例えばルートにincludeするヘッダーファイルを置くなら
include_directories ("${PROJECT_SOURCE_DIR}")
とする


ライブラリ


作成


スタティックライブラリを作るなら
add_library(ライブラリ名  STATIC  CPPファイル名)
共有ライブラリ(so)にするならSTATICをSHAREDとする


add_library(komi STATIC ${sub}/komica.cc)
ルートに書けばルートにlibkomi.aができる

ライブラリをリンクするには

target_link_libraries(実行ファイル名 ライブラリ名)


add_executable (komica main.cc)
target_link_libraries(komica komi)

ライブラリの検索パスを指定


LINK_DIRECTORIES(dir1 dir2)


コンパイラオプションの指定


ADD_DEFINITIONS()


別のファイルを読み込む


INCLUDE(file)



CMakeサンプル

例1

sublib上にkomica.ccとkomica.hがありルート上にlibkomi.aを作りリンクさせる場合

project (komica)
set (sub ${sub} sublib)
include_directories ("${PROJECT_SOURCE_DIR}/${sub}")
add_subdirectory(sublib)
add_library(komi STATIC ${sub}/komica.cc)
add_executable (komica main.cc)
target_link_libraries(komica komi)

例2

sublib上にkomica.ccとkomica.hがありsublib上にlibkomi2.aを作りリンクさせる場合
ルート上のCMakeLists.txt
project (komica)
set (sub ${sub} sublib)
include_directories ("${PROJECT_SOURCE_DIR}/${sub}")
add_subdirectory(sublib)
add_executable (komica main.cc)
target_link_libraries(komica komi2)

sublib上のCMakeLists.txt
add_library(komi2 STATIC komica.cc)
2008年11月08日(土) 15:00:47 Modified by eruvasu




スマートフォン版で見る