CMake

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

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

歴史[編集]

CMakeは1999年に開発が始まった。それはInsight Segmentation and Registration Toolkitのためのクロスプラットフォームなビルド環境の必要性に答えるためのものだった[3] 。 このプロジェクトは可視化人間プロジェクト(英語: Visible Human Project)の一部としてアメリカの連邦医学図書館に金銭的な支援を受けた。 これは Ken MartinらによってVisualization Toolkitのサポートのために開発されたpcmakerを一部参考にしている。 Kitware株式会社のBill H.はUnixconfigureスクリプトファイルの機能を模倣しようとpcmakerのコンポーネントと彼のアイデアを組み合わせた。 CMakeは2000年に始めて実装されたのち2001年に開発され、その後の開発や効率化の継続はCMake開発者自身のシステムに組み込まれることによって激化した。

その中には

  • VXL プロジェクト
  • The CABLE: 機能はBrad Kingによって追加されたもの。
  • GE CorporateによるDART(Distribution Autormation Remote Terminal)のサポートのためのR&D

が含まれる。

追加の機能はVisualization ToolkitがCMakeを使うようになったときに、そのビルド環境やParaViewに対応するために作成されたものである。

機能[編集]

CMakeはインプレース、アウトプレースのビルドにどちらも対応しており、クロスコンパイルや同じソースツリーから様々なビルドを行うことができる。 このソースツリーの外側から直接ビルドできる仕組みは重要な特徴であり、これによってビルドツリーが削除されてもソースファイルには影響しないことを保証できる。

その他の特徴としてはグラフィカルエディタを用いてキャッシュを生成できることが挙げられる。それは、CMakeの動作中に、実行ファイルやその他のファイル、ライブラリの位置を突き止める。 この情報がキャッシュされるが、キャッシュはネイティブビルドファイルを生成する前には仮編成済みとなっている。

CMakeは複雑なディレクトリ階層や様々なライブラリに参照されているアプリケーションの多くに対応しており、例えばCMakeは複数のツールキットを使用したりバラバラなディレクトリに格納されたライブラリを参照したりするプロジェクトに対応可能。

また、CMakeはプロジェクトが最終的なプログラムとしてコンパイルされるコードを生成する前に作成される実行形式を必要とするようなプロジェクトを扱うことができるし、CMakeはオープンソースなので必要な拡張を加えることで特定のプロジェクトのために転用することが可能である。

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

ビルドプロセス[編集]

CMakeのビルドプロセスは2段階必要とする。 まずconfigureファイルから通常のビルドファイルを生成する。 このときプラットフォームのネイティブなビルドツールは実際にビルドされる。[2]

各ディレクトリのCMakeLists.txt に格納されたそれぞれのビルドプロジェクトはビルドプロセスをコントロールする。 CMakeLists.txt は1つ以上のコマンドが「コマンド (引数..)」の形式で記述されている。「コマンド」にはそれぞれのコマンド名が書かれ、「引数」にはスペース区切りの引数リストが記述される。 一部のビルドに対する依存は自動的に解決されるほか、ソフトウェアのライブラリ(静的/動的)や実行ファイルをコンパイルするたくさんの既定のルールがあるが、ユーザーがビルドに関するルールを規定することもできる。 上級者であれば特別なコンパイラやOSを要求するための追加のmakefileジェネレータを作成し組み込むことも可能である。[2]

関連項目[編集]

脚注[編集]

  1. ^ Ohloh Analysis Summary - CMake”. Ohloh. 2009年12月25日閲覧。
  2. ^ a b c Neundorf, Alexander (2006年6月21日). “Why the KDE project switched to CMake—and how”. LWN.net. 2013年7月1日閲覧。
  3. ^ FLOSS Weekly 111: CMake”. podcast. TWiT Network. 2011年2月27日閲覧。

外部リンク[編集]