From 200bf5774285d51d9c5f24b5b52226a7cb54d33d Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Tue, 11 Dec 2018 23:48:53 +0800 Subject: BundleUtilities: Ensure target dir exists when creating symlinks Commit v3.13.0-rc1~279^2 (GetPrerequisites: Move dylibs from MacOS to Frameworks folder in bundle, 2018-07-22) introduced a regression that can cause symlink creation to fail during packaging. Symlinks can be created before targets are installed, so the destination directory of the symlink sometimes won't exist at symlink creation. Fixes: #18726 --- Modules/BundleUtilities.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake index 613ba1a..89ca918 100644 --- a/Modules/BundleUtilities.cmake +++ b/Modules/BundleUtilities.cmake @@ -720,6 +720,9 @@ function(link_resolved_item_into_bundle resolved_item resolved_embedded_item) else() get_filename_component(target_dir "${resolved_embedded_item}" DIRECTORY) file(RELATIVE_PATH symlink_target "${target_dir}" "${resolved_item}") + if (NOT EXISTS "${target_dir}") + file(MAKE_DIRECTORY "${target_dir}") + endif() execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${symlink_target}" "${resolved_embedded_item}") endif() endfunction() -- cgit v0.12