From 19d36c0d2dba2ffc55eb5f9ac930be10182e43fa Mon Sep 17 00:00:00 2001 From: Li Linfeng Date: Sat, 3 Aug 2019 12:42:24 +0800 Subject: [PATCH] Setup macOS bundle for celestia-qt --- CMakeLists.txt | 22 +++++++++++++++++++-- Info.plist.in | 36 ++++++++++++++++++++++++++++++++++ cmake/FixGettext.cmake | 6 +++++- src/celestia/qt/CMakeLists.txt | 7 ++++++- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 Info.plist.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 815138332..8b59cc270 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ endif() project(celestia) set(VERSION "1.7.0") +set(DISPLAY_NAME "Celestia") # # # @@ -183,8 +184,21 @@ foreach (_variableName ${_variableNames}) endforeach() ]]# -set(DATADIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}") -set(FULL_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}") +########### macOS Bundling ############### +if(NATIVE_OSX_APP) + message(STATUS "Generating Info.plist for macOS Bundle") + configure_file(${CMAKE_SOURCE_DIR}/Info.plist.in ${CMAKE_BINARY_DIR}/Info.plist @ONLY) +endif() + +if(NATIVE_OSX_APP) + set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.app/Contents") + set(CMAKE_INSTALL_FULL_LOCALEDIR "${CMAKE_INSTALL_PREFIX}/Resources/locale") + set(DATADIR "${CMAKE_INSTALL_PREFIX}/Resources") + set(FULL_DATADIR "${CMAKE_INSTALL_PREFIX}/Resources") +else() + set(DATADIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}") + set(FULL_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}") +endif() if (NOT GIT_COMMIT) find_program(GIT_FOUND git) @@ -274,6 +288,10 @@ set(BASE_DATA_SOURCES install(FILES ${BASE_DATA_SOURCES} DESTINATION ${DATADIR}) install(FILES "splash.png" DESTINATION "${DATADIR}/splash") +if(NATIVE_OSX_APP) + install(FILES ${CMAKE_BINARY_DIR}/Info.plist DESTINATION .) +endif() + add_subdirectory(src) add_subdirectory(po) add_subdirectory(po2) diff --git a/Info.plist.in b/Info.plist.in new file mode 100644 index 000000000..d5123bad8 --- /dev/null +++ b/Info.plist.in @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + celestia-qt + CFBundleIconFile + celestia + CFBundleIdentifier + org.celestia.Celestia + CFBundleName + Celestia + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + @VERSION@ + CFBundleShortVersionString + @VERSION@ + LSMinimumSystemVersion + @CMAKE_OSX_DEPLOYMENT_TARGET@ + CFBundleDisplayName + @DISPLAY_NAME@ + NSPrincipalClass + NSApplication + NSHighResolutionCapable + true + Application Category + Education + + diff --git a/cmake/FixGettext.cmake b/cmake/FixGettext.cmake index 52fbdcd26..b98b3c2dd 100644 --- a/cmake/FixGettext.cmake +++ b/cmake/FixGettext.cmake @@ -27,7 +27,11 @@ macro(GETTEXT_CREATE_TRANSLATIONS2 _potFile _firstPoFileArg) DEPENDS ${_absPotFile} ${_absFile} ) - install(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + if(NATIVE_OSX_APP) + install(FILES ${_gmoFile} DESTINATION Resources/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + else() + install(FILES ${_gmoFile} DESTINATION share/locale/${_lang}/LC_MESSAGES RENAME ${_potBasename}.mo) + endif() set(_gmoFiles ${_gmoFiles} ${_gmoFile}) endforeach () diff --git a/src/celestia/qt/CMakeLists.txt b/src/celestia/qt/CMakeLists.txt index 4fe56e60e..f93bee782 100644 --- a/src/celestia/qt/CMakeLists.txt +++ b/src/celestia/qt/CMakeLists.txt @@ -73,4 +73,9 @@ if(APPLE) set_property(TARGET celestia-qt APPEND_STRING PROPERTY LINK_FLAGS " -framework CoreFoundation") set_property(TARGET celestia-qt APPEND_STRING PROPERTY LINK_FLAGS " -framework CoreServices") endif() -install(TARGETS celestia-qt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(NATIVE_OSX_APP) + install(TARGETS celestia-qt RUNTIME DESTINATION MacOS) + install(FILES ../macosx/celestia.icns DESTINATION Resources) +else() + install(TARGETS celestia-qt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif()