summaryrefslogtreecommitdiffstats
path: root/Modules/BundleUtilities.cmake
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2011-06-02 15:55:09 (GMT)
committerDavid Cole <david.cole@kitware.com>2011-06-02 15:55:09 (GMT)
commit8f0667c1131d41d9f4a31544322530de92d90cb5 (patch)
treeea9358e3f816472d156f1658adfa603840f8bb68 /Modules/BundleUtilities.cmake
parent8af1eaf499cb539719fa1698ea3031a70a861728 (diff)
downloadCMake-8f0667c1131d41d9f4a31544322530de92d90cb5.zip
CMake-8f0667c1131d41d9f4a31544322530de92d90cb5.tar.gz
CMake-8f0667c1131d41d9f4a31544322530de92d90cb5.tar.bz2
BundleUtilities: Avoid a cryptic and unhelpful error message
When the path to "resolved_embedded_item" was shorter than the path to the bundle being fixed up, fixup_bundle would fail with a cmake error like: "string end index: 110 is out of range 0 - 85" Detect when the path of resolved_embedded_item is too short to be embedded in the bundle, and report the proper error message, so the poor developer reading it has a snowball's chance of actually fixing the issue.
Diffstat (limited to 'Modules/BundleUtilities.cmake')
-rw-r--r--Modules/BundleUtilities.cmake18
1 files changed, 15 insertions, 3 deletions
diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake
index 44f2c20..5e4bf46 100644
--- a/Modules/BundleUtilities.cmake
+++ b/Modules/BundleUtilities.cmake
@@ -546,13 +546,25 @@ function(fixup_bundle_item resolved_embedded_item exepath dirs)
#
get_dotapp_dir("${exepath}" exe_dotapp_dir)
string(LENGTH "${exe_dotapp_dir}/" exe_dotapp_dir_length)
- string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
- if(NOT "${exe_dotapp_dir}/" STREQUAL "${item_substring}")
+ string(LENGTH "${resolved_embedded_item}" resolved_embedded_item_length)
+ set(path_too_short 0)
+ set(is_embedded 0)
+ if(${resolved_embedded_item_length} LESS ${exe_dotapp_dir_length})
+ set(path_too_short 1)
+ endif()
+ if(NOT path_too_short)
+ string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
+ if("${exe_dotapp_dir}/" STREQUAL "${item_substring}")
+ set(is_embedded 1)
+ endif()
+ endif()
+ if(NOT is_embedded)
message(" exe_dotapp_dir/='${exe_dotapp_dir}/'")
message(" item_substring='${item_substring}'")
message(" resolved_embedded_item='${resolved_embedded_item}'")
message("")
- message("Install or copy the item into the bundle before calling fixup_bundle")
+ message("Install or copy the item into the bundle before calling fixup_bundle.")
+ message("Or maybe there's a typo or incorrect path in one of the args to fixup_bundle?")
message("")
message(FATAL_ERROR "cannot fixup an item that is not in the bundle...")
endif()