Create macOS bundle for simplified installation #58

This commit is contained in:
2025-08-07 14:21:33 -05:00
parent 4dcd7bd5ce
commit 3f502eeb64
4 changed files with 38 additions and 5 deletions

View File

@@ -186,6 +186,7 @@ endif()
-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} -DPROJECT_IS_MINGW=${PROJECT_IS_MINGW}
-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} -DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX}
-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} -DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION}
-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME}
-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} -DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION}
-DPROJECT_NAME=${PROJECT_NAME} -DPROJECT_NAME=${PROJECT_NAME}
-DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER} -DPROJECT_RELEASE_ITER=${PROJECT_RELEASE_ITER}

View File

@@ -1,3 +1,7 @@
if (PROJECT_MACOS_ICNS_NAME)
set(PROJECT_MACOS_ICNS_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_MACOS_ICNS_NAME}")
endif()
function(set_common_target_options name) function(set_common_target_options name)
target_compile_definitions(${name} PUBLIC target_compile_definitions(${name} PUBLIC
${PROJECT_DEFINITIONS} ${PROJECT_DEFINITIONS}
@@ -31,11 +35,32 @@ function(add_project_executable2 name dependencies libraries headers sources is_
list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC}) list(APPEND sources ${PROJECT_WINDOWS_VERSION_RC})
endif() endif()
add_executable(${name} if (PROJECT_IS_DARWIN AND PROJECT_MACOS_ICNS_SOURCE AND "${name}" STREQUAL "${PROJECT_NAME}")
${headers} set(PROJECT_MACOS_ICNS_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_MACOS_ICNS_NAME}")
${sources} set_source_files_properties(${PROJECT_MACOS_ICNS_SOURCE} PROPERTIES
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp MACOSX_PACKAGE_LOCATION "Resources"
) )
add_executable(${name}
MACOSX_BUNDLE
${headers}
${sources}
${PROJECT_MACOS_ICNS_SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
)
set_target_properties(${name} PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_ICON_FILE "${PROJECT_MACOS_ICNS_NAME}"
RESOURCE "${PROJECT_MACOS_ICNS_SOURCE}"
)
else()
add_executable(${name}
${headers}
${sources}
${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}/${name}/main.cpp
)
endif()
foreach(dependency ${dependencies}) foreach(dependency ${dependencies})
set_common_target_options(${dependency}) set_common_target_options(${dependency})

View File

@@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
PROJECT_NAME="repertory" PROJECT_NAME="repertory"
PROJECT_MACOS_ICNS_NAME="icon.icns"
PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage" PROJECT_COMPANY_NAME="https://git.fifthgrid.com/blockstorage"
PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory" PROJECT_URL="${PROJECT_COMPANY_NAME}/repertory"

View File

@@ -56,6 +56,7 @@ PROJECT_MINGW64_COPY_DEPENDENCIES=()
PROJECT_MSYS2_PACKAGE_LIST=() PROJECT_MSYS2_PACKAGE_LIST=()
PROJECT_REQUIRE_ALPINE=OFF PROJECT_REQUIRE_ALPINE=OFF
PROJECT_STATIC_LINK=OFF PROJECT_STATIC_LINK=OFF
PROJECT_MACOS_ICNS_NAME=""
if [ "$(uname -s)" == "Darwin" ]; then if [ "$(uname -s)" == "Darwin" ]; then
PROJECT_IS_DARWIN=1 PROJECT_IS_DARWIN=1
@@ -271,6 +272,7 @@ PROJECT_CMAKE_OPTS="-DPROJECT_IS_ARM64=${PROJECT_IS_ARM64} ${PROJECT_CMAKE_OPTS}
PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_DARWIN=${PROJECT_IS_DARWIN} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW=${PROJECT_IS_MINGW} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_IS_MINGW_UNIX=${PROJECT_IS_MINGW_UNIX} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_MACOS_ICNS_NAME=${PROJECT_MACOS_ICNS_NAME} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_MAJOR_VERSION=${PROJECT_MAJOR_VERSION} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_MINOR_VERSION=${PROJECT_MINOR_VERSION} ${PROJECT_CMAKE_OPTS}"
PROJECT_CMAKE_OPTS="-DPROJECT_NAME=${PROJECT_NAME} ${PROJECT_CMAKE_OPTS}" PROJECT_CMAKE_OPTS="-DPROJECT_NAME=${PROJECT_NAME} ${PROJECT_CMAKE_OPTS}"
@@ -349,6 +351,7 @@ export PROJECT_IS_DARWIN
export PROJECT_IS_MINGW export PROJECT_IS_MINGW
export PROJECT_IS_MINGW_UNIX export PROJECT_IS_MINGW_UNIX
export PROJECT_LINK_TYPE export PROJECT_LINK_TYPE
export PROJECT_MACOS_ICNS_NAME
export PROJECT_MAJOR_VERSION export PROJECT_MAJOR_VERSION
export PROJECT_MINGW64_COPY_DEPENDENCIES export PROJECT_MINGW64_COPY_DEPENDENCIES
export PROJECT_MINGW64_DOCKER_BUILD_ARGS export PROJECT_MINGW64_DOCKER_BUILD_ARGS
@@ -406,6 +409,9 @@ echo " Link type: ${PROJECT_LINK_TYPE}"
if [ "${PROJECT_IS_MINGW}" == "1" ]; then if [ "${PROJECT_IS_MINGW}" == "1" ]; then
echo " Long path names: ${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}" echo " Long path names: ${PROJECT_ENABLE_WIN32_LONG_PATH_NAMES}"
fi fi
if [ "${PROJECT_IS_DARWIN}" == "1" ]; then
echo " macOS icns name: ${PROJECT_MACOS_ICNS_NAME}"
fi
echo " Meson toolchain file: ${PROJECT_TOOLCHAIN_FILE_MESON}" echo " Meson toolchain file: ${PROJECT_TOOLCHAIN_FILE_MESON}"
if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; then
echo " MinGW docker build args: ${PROJECT_MINGW64_DOCKER_BUILD_ARGS}" echo " MinGW docker build args: ${PROJECT_MINGW64_DOCKER_BUILD_ARGS}"