CMake: プロジェクトに合わせて最適なXcodeビルドシステムを選択! CMAKE_XCODE_BUILD_SYSTEM活用術


CMAKE_XCODE_BUILD_SYSTEM は、CMake の Xcode 生成器におけるビルドシステムの動作を制御するために使用される変数です。この変数は、Xcode 12 以降で導入された新しいビルドシステムと、従来のビルドシステムのどちらを使用するかを指定するために使用されます。

CMAKE_XCODE_BUILD_SYSTEM は以下のいずれかの値に設定できます。

  • 1
    新しいビルドシステムを使用します。これは、Xcode 12 以降で導入されたビルドシステムです。
  • 0
    従来のビルドシステムを使用します。これは、Xcode 11 以前のバージョンで使用されていたビルドシステムです。

デフォルト値

  • Xcode 12 以降
    1
  • Xcode 11 以前
    0

設定方法

CMAKE_XCODE_BUILD_SYSTEM は、CMakeLists.txt ファイル内で以下のいずれかの方法で設定できます。

  • cmake コマンドラインツールで -DCMAKE_XCODE_BUILD_SYSTEM=0 または -DCMAKE_XCODE_BUILD_SYSTEM=1 オプションを使用する。
  • cmake-gui などの CMake GUI ツールを使用する。
  • どのビルドシステムを使用するかは、プロジェクトの要件によって異なります。一般的には、新しいビルドシステムの方が高速で効率的ですが、従来のビルドシステムの方が安定している場合があります。
  • CMAKE_XCODE_BUILD_SYSTEM 変数は、CMake 3.19 以降でのみ使用できます。

以下の例では、CMAKE_XCODE_BUILD_SYSTEM を 0 に設定し、従来のビルドシステムを使用するように指定します。

cmake_minimum_required(VERSION 3.19)

project(MyProject)

set(CMAKE_XCODE_BUILD_SYSTEM 0)

add_executable(MyProject main.cpp)

CMAKE_XCODE_BUILD_SYSTEM 変数は、Xcode で CMake プロジェクトをビルドする際のビルドシステムを制御するために使用されます。この変数は、プロジェクトの要件に応じて設定する必要があります。

  • どのビルドシステムを使用するかは、プロジェクトの要件によって異なります。
  • この変数は、Xcode 12 以降でのみ使用できます。
  • CMAKE_XCODE_BUILD_SYSTEM 変数は、プロジェクトコードではなく、CMake の設定で使用される情報変数です。


cmake_minimum_required(VERSION 3.19)

project(MyProject)

set(CMAKE_XCODE_BUILD_SYSTEM 0)

add_executable(MyProject main.cpp)

例 2: 新しいビルドシステムを使用する

cmake_minimum_required(VERSION 3.19)

project(MyProject)

set(CMAKE_XCODE_BUILD_SYSTEM 1)

add_executable(MyProject main.cpp)

説明

  • どちらのプロジェクトも main.cpp という名前の C++ ファイルをコンパイルし、MyProject という名前の実行可能ファイルを作成します。
  • 2 つ目のプロジェクトは CMAKE_XCODE_BUILD_SYSTEM を 1 に設定し、新しいビルドシステムを使用します。
  • 1 つ目のプロジェクトは CMAKE_XCODE_BUILD_SYSTEM を 0 に設定し、従来のビルドシステムを使用します。
  • 上記の例では、2 つの異なるプロジェクトを作成しています。

ビルド方法

これらのプロジェクトをビルドするには、以下のコマンドを実行します。

mkdir build
cd build
cmake ..
cmake --build .

実行方法

ビルドが完了したら、以下のコマンドを実行して実行可能ファイルを実行できます。

./MyProject

出力

実行可能ファイルを実行すると、以下の出力が表示されます。

Hello, World!
  • 実際のプロジェクトでは、より多くの CMake コマンドとオプションを使用する必要があります。
  • これらの例は、CMAKE_XCODE_BUILD_SYSTEM 変数の使用方法を説明するために簡略化されています。


しかし、CMAKE_XCODE_BUILD_SYSTEM 変数は、以下の理由で代替方法が必要となる場合があります。

  • より柔軟な制御が必要な場合
    CMAKE_XCODE_BUILD_SYSTEM 変数は、2 つの選択肢しかありません。より詳細な制御が必要な場合は、他の方法を使用する必要があります。
  • 特定のビルドシステムを強制的に使用したい場合
    CMAKE_XCODE_BUILD_SYSTEM 変数は、プロジェクトの設定に基づいてデフォルト値に設定されます。この変数を設定しても、プロジェクトの設定で指定されたビルドシステムが優先される場合があります。
  • Xcode 11 以前のバージョンを使用している場合
    この変数は、Xcode 12 以降でのみ使用できます。

代替方法

CMAKE_XCODE_BUILD_SYSTEM 変数の代替方法として、以下の方法があります。

  • カスタム CMake モジュールを使用する
    独自の CMake モジュールを作成して、ビルドシステムの動作を制御できます。
  • CMake の他の変数を使用する
    CMake には、CMAKE_GENERATOR 変数など、ビルドシステムを制御するために使用できる他の変数がいくつかあります。
  • Xcode のプロジェクト設定を使用する
    Xcode のプロジェクト設定を使用して、ビルドシステムを直接指定できます。これは、Xcode 12 以降でのみ使用できます。

Xcode のプロジェクト設定を使用する

Xcode のプロジェクト設定を使用して、ビルドシステムを直接指定するには、以下の手順を実行します。

  1. Xcode でプロジェクトを開きます。
  2. プロジェクト設定を開きます。
  3. ビルド パネルを選択します。
  4. General タブを選択します。
  5. Build System ドロップダウンリストから、使用するビルドシステムを選択します。

CMake の他の変数を使用する

CMake には、CMAKE_GENERATOR 変数など、ビルドシステムを制御するために使用できる他の変数がいくつかあります。これらの変数の使用方法については、 を参照してください。

カスタム CMake モジュールを使用する

独自の CMake モジュールを作成して、ビルドシステムの動作を制御するには、以下の手順を実行します。

  1. CMake モジュールの C++ ファイルを作成します。
  2. モジュール内で、ビルドシステムの動作を制御するコードを記述します。
  3. CMakeLists.txt ファイルで、作成したモジュールをロードします。