1- # cmake_minimum_required(VERSION 3.16...4.0)
21
3- # References
4- # https://cliutils.gitlab.io/modern-cmake/chapters/basics.html
5- # https://github.com/HerrNamenlos123/openFrameworks/blob/master/cmake/utils.cmake
6-
7- cmake_minimum_required (VERSION 3.16...4.0)
2+ cmake_minimum_required (VERSION 3.18...4.0)
83
94# cmake -S . -B build -G Xcode --log-level=VERBOSE
105# cmake --build build --parallel
@@ -91,6 +86,8 @@ message(VERBOSE "OF_OS_TAG: ${OF_OS_TAG}")
9186message (VERBOSE "OF_IS_CROSS_COMPILE: ${OF_IS_CROSS_COMPILE} " )
9287
9388
89+ set (OF_PROJECT_FRAMEWORKS_TO_BUNDLE "" )
90+
9491
9592# if(CMAKE_SYSTEM_NAME STREQUAL "iOS")
9693# message(STATUS "Building for iOS")
@@ -198,6 +195,13 @@ if( APPLE )
198195 # XCODE_ATTRIBUTE_CONFIGURATION_BUILD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin"
199196 # )
200197
198+ set_target_properties (${OF_PROJECT_NAME} PROPERTIES
199+ MACOSX_BUNDLE YES
200+ BUILD_WITH_INSTALL_RPATH YES
201+ INSTALL_RPATH "@executable_path/../Frameworks"
202+ )
203+
204+
201205 #Suppress ZERO_CHECK (auto-regeneration) target:
202206 set (CMAKE_SUPPRESS_REGENERATION ON )
203207
@@ -206,15 +210,13 @@ if( APPLE )
206210 set (APP_ICON_DEBUG "icon-debug.icns" )
207211 # set(OF_APP_ICON_NAME "icon$<IF:$<CONFIG:Debug>,-debug,>.icns")
208212
213+ # Put the file into MyApp.app/Contents/Resources
209214 set_source_files_properties ("${OF_APP_ICON_PATH}${APP_ICON_RELEASE} " PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" )
210215 set_source_files_properties ("${OF_APP_ICON_PATH}${APP_ICON_DEBUG} " PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" )
211216 target_sources (${OF_PROJECT_NAME} PRIVATE "${OF_APP_ICON_PATH}${APP_ICON_RELEASE} " "${OF_APP_ICON_PATH}${APP_ICON_DEBUG} " )
212217
213218 # set(OF_APP_ICON_PATH "${OF_ROOT_DIRECTORY}/libs/openFrameworksCompiled/project/${OF_LIB_DIR_NAME}/${OF_APP_ICON_NAME}")
214219
215- # Put the file into MyApp.app/Contents/Resources
216- # set_source_files_properties(${OF_APP_ICON_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
217-
218220 # Add it as a source of the bundle target
219221 # target_sources(${OF_PROJECT_NAME} PRIVATE ${OF_APP_ICON_PATH})
220222
@@ -223,6 +225,12 @@ if( APPLE )
223225 # set_target_properties(${OF_PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_ICON_FILE "icon.icns")
224226
225227 # TODO: Check to see if there is an info.plist file existing
228+ set (OF_PROJECT_PLIST_PATH "${OF_PROJECT_DIRECTORY} /openFrameworks-Info.plist" )
229+ if (NOT EXISTS ${OF_PLIST_PATH} )
230+ # Copy a config file into the build directory
231+ file (COPY "${OF_ROOT_DIRECTORY} /libs/openFrameworksCompiled/project/${OF_LIB_DIR_NAME} /openFrameworks-Info.plist" DESTINATION ${OF_PROJECT_DIRECTORY} /)
232+ endif ()
233+
226234 # TODO: Generate a plist if it is not present
227235 # this can be done in the ofConfigMacOS.cmake
228236 set_target_properties (${OF_PROJECT_NAME} PROPERTIES
@@ -232,7 +240,9 @@ if( APPLE )
232240 MACOSX_BUNDLE_BUNDLE_VERSION "1.0"
233241 #MACOSX_BUNDLE_ICON_NAME "$<IF:$<CONFIG:Debug>,icon-debug.icns,icon.icns>"
234242 # MACOSX_BUNDLE_ICON_NAME "$<IF:$<CONFIG:Debug>,icon-debug.icns,icon.icns>"
235- MACOSX_BUNDLE_INFO_PLIST "${OF_PROJECT_DIRECTORY} /openFrameworks-Info.plist"
243+ MACOSX_BUNDLE_INFO_PLIST "${OF_PROJECT_PLIST_PATH} "
244+ # https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#code-signing
245+ # CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
236246 # XCODE_ATTRIBUTE_ICON_NAME "$<IF:$<CONFIG:Debug>,of-debug.icns,icon.icns>"
237247 # XCODE_ATTRIBUTE_GENERATE_INFOPLIST_FILE NO
238248 )
@@ -318,7 +328,7 @@ if(EXISTS "${OF_PROJECT_DIRECTORY}/addons.make")
318328 file (STRINGS "${OF_PROJECT_DIRECTORY} /addons.make" TMP_ADDON_NAMES)
319329 foreach (TMP_ADDON_TO_INCLUDE IN LISTS TMP_ADDON_NAMES)
320330 if (NOT "${TMP_ADDON_TO_INCLUDE} " STREQUAL "" )
321- message (STATUS "ADDING addon ${TMP_ADDON_TO_INCLUDE} " )
331+ message (VERBOSE "ADDING addon ${TMP_ADDON_TO_INCLUDE} " )
322332 of_addon("${TMP_ADDON_TO_INCLUDE} " )
323333 endif ()
324334 endforeach ()
@@ -343,20 +353,30 @@ add_custom_command(TARGET ${OF_PROJECT_NAME} POST_BUILD
343353
344354
345355if (APPLE )
356+ # set(APP_FRAMEWORKS_DIR "$<TARGET_FILE_DIR:${TARGET}>/../Frameworks")
357+ # set(OF_PROJECT_APP_BUNDLE_FRAMEWORKS_DIR "$<TARGET_BUNDLE_CONTENT_DIR:${OF_PROJECT_NAME}>/Frameworks")
358+ # add_custom_command(TARGET ${OF_PROJECT_NAME} POST_BUILD
359+ # COMMAND ${CMAKE_COMMAND} -E make_directory "${OF_PROJECT_APP_BUNDLE_FRAMEWORKS_DIR}"
360+ # COMMAND ${CMAKE_COMMAND} -E copy_directory
361+ # "$<SHELL_PATH:${SYPHON_FW_DIR}>"
362+ # "$<SHELL_PATH:${OF_PROJECT_APP_BUNDLE_FRAMEWORKS_DIR}>/Syphon.framework"
363+ # COMMENT "Embedding Syphon.framework into ${OF_PROJECT_APP_BUNDLE_FRAMEWORKS_DIR}"
364+ # )
365+
346366 if (OF_BUNDLE_DATA_FOLDER)
347367 # rsync -avz --delete --exclude='.DS_Store' "${SRCROOT}/bin/data/" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/data/"
348368 add_custom_command (TARGET ${OF_PROJECT_NAME} POST_BUILD
349- COMMAND ${CMAKE_COMMAND} -E echo
350- "--------------------------------------------------"
369+ COMMENT "--------------------------------------------------"
351370 COMMAND ${CMAKE_COMMAND} -E echo
352371 "Bundling resources to $<TARGET_BUNDLE_CONTENT_DIR:${OF_PROJECT_NAME} >/Resources"
353372 COMMAND ${CMAKE_COMMAND} -E make_directory
354373 "$<TARGET_BUNDLE_CONTENT_DIR:${OF_PROJECT_NAME} >/Resources/data"
355374 COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different
356375 "${OF_PROJECT_DIRECTORY} /bin/data/"
357376 "$<TARGET_BUNDLE_CONTENT_DIR:${OF_PROJECT_NAME} >/Resources/data"
358- COMMAND ${CMAKE_COMMAND} -E echo
359- "--------------------------------------------------"
377+ COMMENT "--------------------------------------------------"
378+ # COMMAND ${CMAKE_COMMAND} -E echo
379+ # "--------------------------------------------------"
360380 )
361381 endif ()
362382endif ()
0 commit comments