فهرست منبع

Merge topic 'test-find_package-resolve-symlinks'

a9428fc473 Tests: Fix FindPackageTest when path to source has a symlink
e27437d0e0 Tests/FindPackageTest: Tell Git to ignore temporary symlink path

Acked-by: Kitware Robot <[email protected]>
Merge-request: !3244
Brad King 6 سال پیش
والد
کامیت
8542152626
2فایلهای تغییر یافته به همراه14 افزوده شده و 8 حذف شده
  1. 1 0
      Tests/FindPackageTest/.gitignore
  2. 13 8
      Tests/FindPackageTest/CMakeLists.txt

+ 1 - 0
Tests/FindPackageTest/.gitignore

@@ -0,0 +1 @@
+/symlink

+ 13 - 8
Tests/FindPackageTest/CMakeLists.txt

@@ -205,15 +205,20 @@ if(UNIX)
     message(SEND_ERROR "SetFoundResolved_DIR set by find_package() is set to \"${SetFoundResolved_DIR}\" (expected \"${SetFoundResolved_EXPECTED}\")")
   endif()
 
-  # Resolve symlinks when finding the package.
-  set(CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS TRUE)
-  set(SetFoundResolved_DIR "")
-  find_package(SetFoundResolved)
-  # ./symlink points back here so it should be gone when resolved.
-  set(SetFoundResolved_EXPECTED "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-  if(NOT "${SetFoundResolved_DIR}" STREQUAL "${SetFoundResolved_EXPECTED}")
-    message(SEND_ERROR "SetFoundResolved_DIR set by find_package() is set to \"${SetFoundResolved_DIR}\" (expected \"${SetFoundResolved_EXPECTED}\")")
+  # This part of the test only works if there are no symlinks in our path.
+  get_filename_component(real_src_dir "${CMAKE_CURRENT_SOURCE_DIR}" REALPATH)
+  if(real_src_dir STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+    # Resolve symlinks when finding the package.
+    set(CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS TRUE)
+    set(SetFoundResolved_DIR "")
+    find_package(SetFoundResolved)
+    # ./symlink points back here so it should be gone when resolved.
+    set(SetFoundResolved_EXPECTED "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+    if(NOT "${SetFoundResolved_DIR}" STREQUAL "${SetFoundResolved_EXPECTED}")
+      message(SEND_ERROR "SetFoundResolved_DIR set by find_package() is set to \"${SetFoundResolved_DIR}\" (expected \"${SetFoundResolved_EXPECTED}\")")
+    endif()
   endif()
+
   # Cleanup.
   unset(CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS)
   file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/symlink")