Skip to content

Commit 12a8e7c

Browse files
committed
CMake: fix Qt deployment on MacOS
1 parent 406b5de commit 12a8e7c

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

cmake/LSLCMake.cmake

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,17 @@ function(installLSLApp target)
130130
DESTINATION ${CMAKE_INSTALL_BINDIR}
131131
COMPONENT ${SHAREDLIBCOMPONENT})
132132
endif()
133+
set(APPLE_APP_PATH "\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${target}.app")
133134
if(APPLE AND NOT qtapp)
134135
# fixup_bundle appears to be broken for Qt apps. Use only for non-Qt.
135136
get_target_property(target_is_bundle ${target} MACOSX_BUNDLE)
136137
if(target_is_bundle)
137138
install(CODE "
139+
get_filename_component(LIBDIR $<TARGET_FILE:LSL::lsl> DIRECTORY)
140+
message(STATUS \${LIBDIR})
138141
include(BundleUtilities)
139142
set(BU_CHMOD_BUNDLE_ITEMS ON)
140-
fixup_bundle(\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${target}.app \"\" \"${lsldir}\")
143+
fixup_bundle(${APPLE_APP_PATH} \"\" \"\${LIBDIR}\")
141144
"
142145
COMPONENT ${PROJECT_NAME}
143146
)
@@ -174,19 +177,24 @@ function(installLSLApp target)
174177
elseif(APPLE)
175178
# It should be enough to call fixup_bundle (see below),
176179
# but this fails to install qt plugins (cocoa).
177-
# Use macdeployqt instead (but this is bad at grabbing lsl dylib, so we did that above)
180+
# Use macdeployqt instead (but this is bad at grabbing lsl dylib, so we do it manually
178181
findQtInstallationTool("macdeployqt")
179182
install(CODE "
180-
if(\${CMAKE_INSTALL_CONFIG_NAME} STREQUAL Debug)
181-
set(debug 1)
182-
endif()
183+
file(INSTALL $<TARGET_FILE:LSL::lsl> DESTINATION ${APPLE_APP_PATH}/Contents/MacOS)
183184
message(STATUS \"Running Qt Deploy Tool for $<TARGET_FILE:${target}>...\")
184185
execute_process(COMMAND
185-
echo \"${QT_DEPLOYQT_EXECUTABLE}\"
186-
$<TARGET_FILE:${target}>
187-
-verbose=1
188-
$<$<BOOL:\${debug}>:--use-debug-libs>
186+
\"${QT_DEPLOYQT_EXECUTABLE}\"
187+
\"${APPLE_APP_PATH}\"
188+
-verbose=1 -always-overwrite
189+
\$<\$<STREQUAL:\${CMAKE_INSTALL_CONFIG_NAME},\"Debug\">:--use-debug-libs>
190+
COMMAND_ECHO STDOUT
191+
OUTPUT_VARIABLE DEPLOYOUTPUT
192+
ERROR_VARIABLE DEPLOYOUTPUT
193+
RESULT_VARIABLE DEPLOYSTATUS
189194
)
195+
if(\${DEPLOYSTATUS})
196+
message(WARNING \"\${DEPLOYOUTPUT}\")
197+
endif()
190198
")
191199
endif()
192200
endfunction()

0 commit comments

Comments
 (0)