CMake

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索
CMake
Cmake.svg
開発元 Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf
最新版 3.4.3 - 2016年1月25日(7か月前) (2016-01-25[1][±]
最新評価版 3.5.0-rc1 - 2016年2月2日(7か月前) (2016-02-02[2][±]
プログラミング言語 C++[3]
対応OS クロスプラットフォーム
種別 プログラミングツール
ライセンス 修正BSDライセンス
公式サイト www.cmake.org
テンプレートを表示

CMakeはコンパイラに依存しないビルド自動化のためのフリーソフトウェアであり、様々なオペレーティングシステムで動作させることができる。CMakeは階層化ディレクトリや複数のライブラリを利用するアプリケーションをサポートするよう設計されている。実際のビルドにおいては、makeXcodeVisual Studioのようなネイティブのビルド環境が利用される。CMake自身は最小限の依存関係を持つよう設計されており、ビルドするにはC++コンパイラのみを必要とする[4]

歴史[編集]

CMakeは1999年に開発が始まった。その目的はInsight Segmentation and Registration Toolkit (ITK) のクロスプラットフォームなビルド環境の要求に答えるためのものだった[5]。このプロジェクトは可視化人間プロジェクト(英語: Visible Human Project)の一部として、アメリカ国立医学図書館の支援を受けた。CMakeは、可視化ソフトウェアであるVisualization Toolkit (VTK) のサポートのためにKen Martinらによって開発されたpcmakerを一部参考にしている。Kitware社のBill Hoffmanはこのpcmakerの要素に、Unixconfigureスクリプトの代替品を作るという彼のアイディアを組み合わせた。2000年には最初の実装が作られ、2001年にはさらに開発が進められた。その後、CMakeは下に示すようなCMake開発者達自身が関与するシステムに組み込まれることによって開発や改善が加速された。

  • VXLプロジェクト(コンピュータビジョン用ライブラリ)
  • The CABLE: 機能はBrad Kingによって追加されたもの
  • ゼネラル・エレクトリックの研究開発部門にてDART (Distribution Automation Remote Terminal) の開発に使用される

いくつかの機能は、VTKがビルドシステムをCMakeに切り替えたときや、やはり可視化ソフトウェアであるParaViewの対応のために追加されたものである。

機能[編集]

CMakeはインプレースおよびアウトオブプレースでのビルドの双方に対応しており、同じソースツリーから複数のビルド結果を生成でき、またクロスコンパイルにも対応している。この、ソースツリーの外側にビルド結果を生成する仕組みはCMakeの重要な特徴で、ビルドツリーが削除されてもソースファイルには影響しない。

CMakeは必要な実行ファイルやその他のファイル、ライブラリの場所を探し出すことができる。その結果はキャッシュに保存され、またそれはビルドの前に調整することができる。調整には、プロジェクトに付属するグラフィカルエディタを使うことができる。

複雑なディレクトリ階層や、いくつものライブラリに依存したアプリケーションにもCMakeは対応している。例えば、依存しているツールキットやライブラリがそれぞれに複数のディレクトリを持つような場合でも処理が可能である。加えて、最終的なアプリケーションのコンパイルに必要なコードを生成する実行ファイルを事前に生成しておくことが求められるような複雑なビルドにも対応できる。CMakeはオープンソースであり、拡張も容易なため、必要に応じて特定のプロジェクト向けに改変することもできる。

CMakeはUNIXWindowsMac OS XOS/2といった様々なプラットフォームやMicrosoft Visual C++CygwinMinGWXcodeといったIDEに対応したmakefileを生成することが可能である。

ビルドプロセス[編集]

CMakeのビルドプロセスは2段階からなる。まず、CMake用の設定ファイルから通常のビルド環境用のビルドファイルを生成する。次に、プラットフォームネイティブのビルドツールがそれを利用して実際のビルドを行う[4]

各プロジェクトは、ディレクトリ毎にビルドプロセスを制御するためのファイル CMakeLists.txt を持つ。同ファイルには一つ以上のコマンドが、"COMMAND (args...)" の形式で記述される。ここで "COMMAND" はコマンドを表す名前で、"args" は空白で区切られた引数のリストが記述される。CMakeには静的/動的ライブラリや実行ファイルをコンパイルするための様々な組み込みルールが豊富に用意されているが、ユーザーがルールを追加するための仕組みも提供されている。ビルドに関する依存関係の一部は自動的に解決される。高度な使い方としては、特殊なコンパイラやOSに対応するためのmakefile生成器を組み込むことが可能である[4]

関連項目[編集]

脚注[編集]

  1. ^ The Kitware Blog - CMake 3.4.3 available for download”. 2016年2月6日閲覧。
  2. ^ CMake 3.5.0-rc1 is now ready! - The Kitware Blog”. 2016年2月6日閲覧。
  3. ^ Ohloh Analysis Summary - CMake”. Ohloh. 2009年12月25日閲覧。
  4. ^ a b c Neundorf, Alexander (2006年6月21日). “Why the KDE project switched to CMake—and how”. LWN.net. 2013年7月1日閲覧。
  5. ^ FLOSS Weekly 111: CMake”. podcast. TWiT Network. 2011年2月27日閲覧。

外部リンク[編集]