Skip to content

Commit c3bb1f2

Browse files
MacOS app: Allow per-app icon, Info.plist and bundle identifier
1 parent bebc3dc commit c3bb1f2

1 file changed

Lines changed: 24 additions & 7 deletions

File tree

NativeApp/CMakeLists.txt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ elseif(PLATFORM_MACOS)
151151
)
152152

153153
function(add_macos_app TARGET_NAME SOURCE INCLUDE ASSETS)
154+
# Optional per-app overrides; fall back to the engine defaults when not provided,
155+
# so any application can supply its own icon, Info.plist and bundle identifier.
156+
cmake_parse_arguments(ARG "" "INFO_PLIST;ICON;BUNDLE_IDENTIFIER" "" ${ARGN})
157+
154158
get_target_property(NATIVE_APP_SOURCE_DIR Diligent-NativeAppBase SOURCE_DIR)
155159

156160
set(APPLE_SOURCE
@@ -180,27 +184,40 @@ elseif(PLATFORM_MACOS)
180184
${NATIVE_APP_SOURCE_DIR}/Apple/Source/Classes/OSX/ModeSelectionViewController.h
181185
)
182186

187+
if(ARG_ICON)
188+
set(APP_ICON_FILE ${ARG_ICON})
189+
else()
190+
set(APP_ICON_FILE ${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/AppIcon.appiconset/dg.icns)
191+
endif()
192+
183193
set(APPLE_RESOURCES
184194
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Base.lproj/Main.storyboard
185-
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/AppIcon.appiconset/dg.icns
195+
${APP_ICON_FILE}
186196
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/opengl-logo.png
187197
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/vulkan-logo.png
188198
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/metal-logo.png
189199
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Images.xcassets/webgpu-logo.png
190200
)
191201

192-
set(APPLE_INFO_PLIST
193-
${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Info.plist
194-
)
202+
if(ARG_INFO_PLIST)
203+
set(APPLE_INFO_PLIST ${ARG_INFO_PLIST})
204+
else()
205+
set(APPLE_INFO_PLIST ${NATIVE_APP_SOURCE_DIR}/Apple/Data/OSX/Info.plist)
206+
endif()
195207

196208
set(APPLE_INCLUDE_DIRS
197209
${NATIVE_APP_SOURCE_DIR}/Apple/Source/Classes/OSX
198210
)
199211

200212
add_executable(${TARGET_NAME} MACOSX_BUNDLE ${SOURCE} ${APPLE_SOURCE} ${INCLUDE} ${APPLE_INCLUDE} ${ASSETS} ${APPLE_RESOURCES})
201-
string(REPLACE "_" "-" BUNDLE_NAME ${TARGET_NAME})
213+
if(ARG_BUNDLE_IDENTIFIER)
214+
set(APP_BUNDLE_IDENTIFIER ${ARG_BUNDLE_IDENTIFIER})
215+
else()
216+
string(REPLACE "_" "-" BUNDLE_NAME ${TARGET_NAME})
217+
set(APP_BUNDLE_IDENTIFIER "com.diligentengine.samples.${BUNDLE_NAME}")
218+
endif()
202219
set_target_properties(${TARGET_NAME} PROPERTIES
203-
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.diligentengine.samples.${BUNDLE_NAME}"
220+
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${APP_BUNDLE_IDENTIFIER}"
204221
MACOSX_BUNDLE_INFO_PLIST "${APPLE_INFO_PLIST}"
205222
RESOURCE "${APPLE_RESOURCES}"
206223
)
@@ -233,7 +250,7 @@ elseif(PLATFORM_MACOS)
233250
endfunction()
234251

235252
function(add_target_platform_app TARGET_NAME SOURCE INCLUDE ASSETS)
236-
add_macos_app("${TARGET_NAME}" "${SOURCE}" "${INCLUDE}" "${ASSETS}")
253+
add_macos_app("${TARGET_NAME}" "${SOURCE}" "${INCLUDE}" "${ASSETS}" ${ARGN})
237254
endfunction()
238255

239256
elseif(PLATFORM_IOS)

0 commit comments

Comments
 (0)