【CMake】Mac OS X アプリケーションバンドルを簡単に作成:MACOSX_BUNDLE プロパティ徹底解説


設定方法

"MACOSX_BUNDLE" プロパティは、ターゲットに対して TRUE または FALSE に設定できます。 TRUE に設定すると、ターゲットはアプリケーションバンドルとしてビルドされます。 FALSE に設定すると、ターゲットは通常のバイナリ実行可能ファイルとしてビルドされます。

set_target_properties(my_app PROPERTIES MACOSX_BUNDLE TRUE)

関連プロパティ

"MACOSX_BUNDLE" プロパティに加えて、アプリケーションバンドルを構成するために使用できる他のプロパティがいくつかあります。 以下に、最も重要なプロパティをいくつか示します。

  • MACOSX_BUNDLE_INFO_PLIST
    アプリケーションバンドルの情報プロパティリストファイルを設定します。
  • MACOSX_BUNDLE_ICON_FILE
    アプリケーションバンドルのアイコンファイルを設定します。
  • MACOSX_BUNDLE_BUNDLE_NAME
    アプリケーションバンドルの名前を設定します。

次の例では、"my_app" という名前のターゲットをアプリケーションバンドルとしてビルドする方法を示します。 バンドルには "My App" という名前が付けられ、"AppIcon.icns" ファイルがアイコンとして使用され、"Info.plist" ファイルが情報プロパティリストとして使用されます。

set_target_properties(my_app PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "My App")
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_ICON_FILE "AppIcon.icns")
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_INFO_PLIST "Info.plist")

利点

"MACOSX_BUNDLE" プロパティを使用する利点は次のとおりです。

  • アプリケーションのアイコンと情報プロパティリストを簡単に設定できる
  • アプリケーションの設定を簡単に管理できる
  • アプリケーションを配布しやすい

"MACOSX_BUNDLE" プロパティは、Mac OS X アプリケーションをビルドおよび配布するための強力なツールです。 このプロパティを使用すると、アプリケーションバンドルを簡単に作成し、アプリケーションの設定を管理し、アプリケーションのアイコンと情報プロパティリストを設定することができます。

  • "MACOSX_BUNDLE" プロパティは、Xcode でも使用できます。
  • "MACOSX_BUNDLE" プロパティは、CMake 2.8 以降で使用できます。


cmake_minimum_required(VERSION 3.0)

project(MyApp)

set(SOURCE_FILES main.cpp App.h App.cpp)
set(RESOURCE_FILES AppIcon.icns)

add_executable(my_app ${SOURCE_FILES})

target_link_libraries(my_app ${LIBS})

set_target_properties(my_app PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "My App")
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_ICON_FILE "AppIcon.icns")
set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_INFO_PLIST "Info.plist")

install(TARGETS my_app DESTINATION /Applications)

このコードは、次のようになります。

  1. cmake_minimum_required(VERSION 3.0): CMake の最小バージョンを 3.0 に設定します。
  2. project(MyApp): プロジェクトの名前を "MyApp" に設定します。
  3. set(SOURCE_FILES main.cpp App.h App.cpp): ソースファイルのリストを設定します。
  4. set(RESOURCE_FILES AppIcon.icns): リソースファイルのリストを設定します。
  5. add_executable(my_app ${SOURCE_FILES}): "my_app" という名前の実行可能ファイルをソースファイルから追加します。
  6. target_link_libraries(my_app ${LIBS}): 実行可能ファイルに必要なライブラリをリンクします。
  7. set_target_properties(my_app PROPERTIES MACOSX_BUNDLE TRUE): ターゲットをアプリケーションバンドルとしてビルドするように設定します。
  8. set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "My App"): アプリケーションバンドルの名前を "My App" に設定します。
  9. set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_ICON_FILE "AppIcon.icns"): アプリケーションバンドルのアイコンファイルを "AppIcon.icns" に設定します。
  10. set_target_properties(my_app PROPERTIES MACOSX_BUNDLE_INFO_PLIST "Info.plist"): アプリケーションバンドルの情報プロパティリストファイルを "Info.plist" に設定します。
  11. install(TARGETS my_app DESTINATION /Applications): アプリケーションバンドルを /Applications ディレクトリにインストールします。


手動でアプリケーションバンドルを作成する

"MACOSX_BUNDLE" プロパティを使用せずに、手動でアプリケーションバンドルを作成することもできます。 これを行うには、次の手順を実行する必要があります。

  1. アプリケーションの実行可能ファイルを作成します。
  2. アプリケーションに必要なリソースファイルをすべて収集します。
  3. アプリケーションの設定を Info.plist ファイルに保存します。

この方法は、より多くの制御が必要な場合や、"MACOSX_BUNDLE" プロパティでサポートされていないオプションを使用したい場合に役立ちます。

mkdir Myapp.app
cp MyApp MyApp.app/Contents/MacOS
cp AppIcon.icns MyApp.app/Contents/Resources/AppIcon.icns
cp Info.plist MyApp.app/Contents/Info.plist

別のビルドシステムを使用する

CMake 以外にも、MacOS アプリケーションをビルドするためのビルドシステムはいくつかあります。 以下に、人気のある代替手段をいくつか紹介します。

  • Ninja
    高速で効率的な代替ビルドシステムです。
  • Make
    Unix 系オペレーティングシステムで使用される伝統的なビルドシステムです。
  • Xcode
    Apple が提供する公式の統合開発環境 (IDE) です。

これらのビルドシステムはそれぞれ、独自の機能と利点を持っています。

アプリケーションを別の形式で配布する

必ずしもアプリケーションバンドルでアプリケーションを配布する必要はありません。 代わりに、以下の形式で配布することもできます。

  • Web アプリケーション
    Web ブラウザで実行されるアプリケーションです。
  • インストーラー
    アプリケーションをインストールおよび設定するのに役立つプログラムです。
  • DMG イメージ
    アプリケーションとすべてのリソースを含む単一のディスクイメージファイルです。

アプリケーションの配布方法の選択は、特定のニーズと要件によって異なります。