1
# Running macdeployqt on a POST_BUILD copied binaries is pointless when using CPack because
2
# the copied binaries will be overridden by the corresponding install(TARGETS) commands.
3
# That's why we run macdeployqt using install(CODE) on the already installed binaries.
4
# The precondition is that all install(TARGETS) calls have to be called before this function is
6
# macdeloyqt is called only once, but it is given all executables that should be processed.
7
function(kpxc_run_macdeployqt_at_install_time)
9
set(SINGLE_VALUE_OPTIONS
12
set(MULTI_VALUE_OPTIONS
15
cmake_parse_arguments(PARSE_ARGV 0 ARG
16
"${NO_VALUE_OPTIONS}" "${SINGLE_VALUE_OPTIONS}" "${MULTI_VALUE_OPTIONS}"
19
set(ESCAPED_PREFIX "\${CMAKE_INSTALL_PREFIX}")
20
set(APP_BUNDLE_NAME "${ARG_APP_NAME}.app")
21
set(APP_BUNDLE_PATH "${ESCAPED_PREFIX}/${APP_BUNDLE_NAME}")
23
# Collect extra binaries and plugins that should be handled by macdpeloyqt.
24
set(EXTRA_BINARIES "")
25
foreach(EXTRA_BINARY ${ARG_EXTRA_BINARIES})
26
set(INSTALLED_BINARY_PATH "${ESCAPED_PREFIX}/${EXTRA_BINARY}")
27
list(APPEND EXTRA_BINARIES "-executable=${INSTALLED_BINARY_PATH}")
30
list(JOIN EXTRA_BINARIES " " EXTRA_BINARIES_STR)
32
if(CMAKE_VERSION VERSION_GREATER "3.14")
33
set(COMMAND_ECHO "COMMAND_ECHO STDOUT")
42
# Adjusts dependency rpaths of extra binaries
45
# Silences warnings on subsequent re-installations
52
COMMAND ${COMMAND_ARGS}
54
RESULT_VARIABLE EXIT_CODE
56
if(NOT EXIT_CODE EQUAL 0)
58
\"Running ${COMMAND_ARGS} failed with exit code \${EXIT_CODE}.\")