Author: h.mohri
この記事は、DAVID MILLINGTONによるNew in 10.2.3: CMake Support for iOS and Androidの抄訳です。 |
前回C++コンパイラのCMakeサポートに関してご紹介致しました。
CMakeとは何か、Win32とWin64の両方でWindows用の使い方について説明しました。
https://community.embarcadero.com/blogs/entry/new-in-10-2-3-cmake-support-ja
今回はCMake
をiOS, Androidなどのモバイル用に使用した方法のご紹介です。これは、CMake
を呼び出す方法と、CMakeLists.txt
ファイルにモバイル固有の情報を書き込む方法の両方です。
Table of Contents
CMake for iOS and Android
CMake
でWindowsをターゲットをビルドするときは、Win32またはWin64のC/C++コンパイラを指定します。
一度利用したいコンパイラをCMake
が検出し取り出します
これは、同じプラットフォームを構築してターゲット設定しているためです。この場合Windows上に構築し、Windowsをターゲットにしています。 しかし、iOS32,iOS64,Androidの場合、目標としているプラットフォームとは異なるプラットフォームをクロスコンパイルで構築しています。
クロスコンパイルするには、使用するコンパイラを指定する代わりに、ツールチェーンを指定します。 これはCMakeにコンパイラの使い方とモバイルプラットフォームの使い方を伝えるcmakeファイルで、クロスコンパイルの完全な情報が含まれています。 これらのツールチェーンファイルは、各プラットフォームに固有の追加のデプロイメントオプション(スプラッシュ画面イメージなど)も設定します。
C++Builderのクロスコンパイルツールチェインファイルは、使用するコンパイラと同じ名前を持っています。たとえば、bccaarmはbccaarm.cmakeです。 使用するコマンドラインを次に示します。
iOS32:
iOS64:
Android:
Windows用コマンドよりもさらに入力が少なくて済みます!
これは、CMakeLists.txt
ファイルが置かれているフォルダからCMake
を起動していることを前提としています。 それが他の場所にある場合は、コマンドラインの最後に “… -G Ninja ..”や “… -G Ninja c:\my\path”などのパスを指定することができます。
CMakeLists.txt
のモバイル固有の情報
ターゲットは、モバイルデバイスにプロジェクトを展開できるという点でWindowsと異なり、アプリケーションバンドルまたはパッケージに収まる多数のファイルを展開することが含まれます。paserverは通常どおりに実行するので、paserverがインストールされていることを、コマンドラインを実行する前にIDEでデプロイ確認できます。
CMakeの固有のモバイルであることを伝えるために使用できるいくつかの「マクロと変数」があります。
iOS
- マクロ:デバイスファミリ(iPhoneやiPadなど), サポートされるデバイスの向き, バックグラウンドモード, 配備が必要な追加ファイルが含まれています。 これらはすべてプロジェクトオプションの設定と同等です。
- 変数:アプリケーション名,SDK,証明書,プロビジョニングプロファイル,バンドル名,カメラの使用状況などのinfo.plistファイルに格納される多数のアイテム。 任意のinfo.plistオプションや、アイコンと画像ファイルを表示します。
Android
- マクロ:classes.dexに追加するjarファイル。 パーミッション; および展開する追加ファイル。
- 変数:プロジェクトの場所,KeyStoreの情報(パスワード、エイリアスなど), サービス,ラベル,バージョン,インストール場所などの情報を明示する。 スプラッシュ画像, スタイル, アイコンと画像ファイルなど
ドキュメントにはリストがあります。 すべてのマクロと変数を使用できます。 いくつかの変数には、CMakeLists.txt
ファイル内のターゲット固有の設定を行うために読むことができる固定値があらかじめ設定されています。
ターゲットに基づいたCMakeLists.txtの設定
CMakeLists.txt
ファイルは一般的なプロジェクトの説明ですが、Androidをターゲットに設定する際に使用されるAndroidマニフェスト情報などを指定する情報が必要です。
設定方法はEMBT_TARGET変数の値に基づいてifステートメントを追加することです。 Androidプラットフォーム用に設定の場合
EMBT_TARGETは次のいずれかです。
- “Android”
- “iOS32”
- “iOS64”
- “Windows”
これらを使い、各プラットフォーム情報を設定に追加することができます。
関連
次回のSummary
- iOSまたはAndroid向けにビルドするときに使用するツールチェーンファイルを指定
CMakeLists.txt
ファイルで、EMBT_TARGETをチェックし、それを使ってデプロイメントやmanifest/info.plistなどのターゲット固有の設定