CMake: Fix macOS bundle wrapper generation

Now bundle wrapper scripts are created in the particular build folder,
i.e. in subdir 'Debug', 'Release' etc. in multi config builds (Xcode).
To do this, the scripts are now copied whenever the target is built
and not during the configuration phase.

To do: "install" wrapper scripts.
This commit is contained in:
Albrecht Schlosser
2020-08-18 16:23:25 +02:00
parent b8b2805270
commit fcd5239adc
2 changed files with 34 additions and 22 deletions
+18 -20
View File
@@ -102,26 +102,6 @@ macro (CREATE_EXAMPLE NAME SOURCES LIBRARIES)
set (ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_NAME}.app/Contents/Resources/${ICON_NAME}")
endif (MAC_BUNDLE AND ICON_NAME)
##############################################################################
# copy macOS "bundle wrapper" (shell script) to target (bin) directory
##############################################################################
# (1) file (COPY ...) to set execution permissions
# (2) file (RENAME ...) to move the file to its final place
##############################################################################
if (MAC_BUNDLE)
file (COPY
${CMAKE_CURRENT_SOURCE_DIR}/../CMake/macOS-bundle-wrapper.in
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
file (RENAME
${CMAKE_CURRENT_BINARY_DIR}/macOS-bundle-wrapper.in
${EXECUTABLE_OUTPUT_PATH}/${TARGET_NAME}
)
endif (MAC_BUNDLE)
##############################################################################
# add executable target and set properties (all platforms)
##############################################################################
@@ -139,6 +119,24 @@ macro (CREATE_EXAMPLE NAME SOURCES LIBRARIES)
set_target_properties (${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/${PLIST}")
endif (PLIST)
##############################################################################
# Copy macOS "bundle wrapper" (shell script) to target directory.
# The "custom command" will be executed "POST_BUILD".
##############################################################################
if (MAC_BUNDLE)
set (WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${TARGET_NAME}")
add_custom_command (
TARGET ${TARGET_NAME} POST_BUILD
COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/../CMake/macOS-bundle-wrapper.in ${WRAPPER}
COMMAND chmod u+x,g+x,o+x ${WRAPPER}
BYPRODUCTS ${WRAPPER}
# COMMENT "Creating macOS bundle wrapper script ${WRAPPER}"
VERBATIM
)
unset (WRAPPER)
endif (MAC_BUNDLE)
######################################################################
# Parse optional fourth argument "ANDROID_OK", see description above.
######################################################################