Author: h.mohri
この記事は、DAVID MILLINGTONによるNew in 10.2.3: Using CMake with Ninjaの抄訳です。 |
CMakeを使ったビルドのサポートは10.2.3の大きな新機能の1つです。まだ試されてない場合はイントロダクション WindowsでのCMakeビルドとiOS/Androidでのビルドをお読みください。
本投稿の利用方法カバーはCMakeジェネレータとNinjaでの高速パラレルビルドえす。
Table of Contents
CMake ジェネレータ
CMakeはコンパイラとプラットフォームに依存しないプロジェクトシステムですが、その名前にもかかわらず、実際にはメーキングやビルドはしません。そのかわりに、システム上にあるツールを利用し、CMakeLists.txt
ファイルを構築に必要なビルドデータに変換します。そのコンバージョンジェネレータです:特定のビルドシステム用のファイル/データを生成。これらを一度生成すると、そのツールを使用してビルドします。 プロジェクトを変更した場合、例えば、新しいファイルを追加したり、設定を変更するなどして、CMake自体を再実行する必要があります。
ジェネレータは「-G」コマンドラインスイッチを指定します。
必要ならばオールドファッションなmakefilesを使う事ができます。makeを使用する場合は、-G "BorlandMakeFiles"
を使用してください。 他のジェネレータも使用できます。 特にCMakeでサポートしているのはNinja
です。
Ninja
Ninja
は非常に小さくて高速なビルドシステムです。これは、従来のDelphi/C++Builderアプリのように、単一のEXEとして提供されます。 並列ビルドも可能です。 C++Builderはすでに並列コンパイルをサポートしていますが、Ninjaは非常に優れた実装です。
-Gを指定したコマンドライン
1 |
cmake -DCMAKE_TOOLCHAIN_FILE=bccaarm.cmake -G Ninja |
ここでは、Android用のビルド(bccaarm toolchainファイルを使用しています)。CMakeはその作業を行い、Ninja
ジェネレータを使用して、Ninja
が作成するいくつかのファイルをビルドします:
そして、CMakeが完成したら、ninjaを起動するだけでプロジェクトをビルドできます:
1 |
ninja |
Simple as that! Ninja
が引き継ぎ、ビルドして並行して実行します。 タスクマネージャを開くと、コンパイラの複数のコピーが表示されます。
コマンドラインでパラレル出力がシリアル化され、7つのステップが完了するたびに、ステータスが表示されます。
Overview
Ninja
の使用は非常にシンプルです。実際、すべての例で使用しています。マニュアルにはインストール手順が含まれています。
これは、一般的なCMakeをローカルマシン上で並列ビルドするための素晴らしい追加機能である、高速で軽量なビルドシステムです。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition