2022-03-08 06:30:17 -05:00
|
|
|
# Running macdeployqt on a POST_BUILD copied binaries is pointless when using CPack because
|
2023-01-29 09:38:44 -05:00
|
|
|
# the copied binaries will be overridden by the corresponding install(TARGETS) commands.
|
2022-03-08 06:30:17 -05:00
|
|
|
# That's why we run macdeployqt using install(CODE) on the already installed binaries.
|
|
|
|
# The precondition is that all install(TARGETS) calls have to be called before this function is
|
|
|
|
# called.
|
|
|
|
# macdeloyqt is called only once, but it is given all executables that should be processed.
|
|
|
|
function(kpxc_run_macdeployqt_at_install_time)
|
|
|
|
set(NO_VALUE_OPTIONS)
|
|
|
|
set(SINGLE_VALUE_OPTIONS
|
|
|
|
APP_NAME
|
|
|
|
)
|
|
|
|
set(MULTI_VALUE_OPTIONS
|
|
|
|
EXTRA_BINARIES
|
|
|
|
)
|
|
|
|
cmake_parse_arguments(PARSE_ARGV 0 ARG
|
|
|
|
"${NO_VALUE_OPTIONS}" "${SINGLE_VALUE_OPTIONS}" "${MULTI_VALUE_OPTIONS}"
|
|
|
|
)
|
|
|
|
|
|
|
|
set(ESCAPED_PREFIX "\${CMAKE_INSTALL_PREFIX}")
|
|
|
|
set(APP_BUNDLE_NAME "${ARG_APP_NAME}.app")
|
|
|
|
set(APP_BUNDLE_PATH "${ESCAPED_PREFIX}/${APP_BUNDLE_NAME}")
|
|
|
|
|
|
|
|
# Collect extra binaries and plugins that should be handled by macdpeloyqt.
|
|
|
|
set(EXTRA_BINARIES "")
|
|
|
|
foreach(EXTRA_BINARY ${ARG_EXTRA_BINARIES})
|
|
|
|
set(INSTALLED_BINARY_PATH "${ESCAPED_PREFIX}/${EXTRA_BINARY}")
|
|
|
|
list(APPEND EXTRA_BINARIES "-executable=${INSTALLED_BINARY_PATH}")
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
list(JOIN EXTRA_BINARIES " " EXTRA_BINARIES_STR)
|
|
|
|
|
|
|
|
if(CMAKE_VERSION VERSION_GREATER "3.14")
|
|
|
|
set(COMMAND_ECHO "COMMAND_ECHO STDOUT")
|
|
|
|
else()
|
|
|
|
set(COMMAND_ECHO "")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
set(COMMAND_ARGS
|
|
|
|
${MACDEPLOYQT_EXE}
|
|
|
|
${APP_BUNDLE_PATH}
|
|
|
|
|
|
|
|
# Adjusts dependency rpaths of extra binaries
|
|
|
|
${EXTRA_BINARIES_STR}
|
|
|
|
|
|
|
|
# Silences warnings on subsequent re-installations
|
|
|
|
-always-overwrite
|
|
|
|
)
|
|
|
|
|
|
|
|
install(CODE
|
|
|
|
"
|
|
|
|
execute_process(
|
|
|
|
COMMAND ${COMMAND_ARGS}
|
|
|
|
${COMMAND_ECHO}
|
|
|
|
RESULT_VARIABLE EXIT_CODE
|
|
|
|
)
|
|
|
|
if(NOT EXIT_CODE EQUAL 0)
|
|
|
|
message(FATAL_ERROR
|
|
|
|
\"Running ${COMMAND_ARGS} failed with exit code \${EXIT_CODE}.\")
|
|
|
|
endif()
|
|
|
|
")
|
|
|
|
endfunction()
|