REAL_PATH.cmake 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. if (NOT WIN32 OR CYGWIN)
  2. file(TOUCH "${CMAKE_CURRENT_BINARY_DIR}/test.txt")
  3. file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/test.sym")
  4. file(CREATE_LINK "test.txt" "${CMAKE_CURRENT_BINARY_DIR}/test.sym" SYMBOLIC)
  5. file(REAL_PATH "${CMAKE_CURRENT_BINARY_DIR}/test.sym" real_path)
  6. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/test.txt")
  7. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/test.txt\"")
  8. endif()
  9. file(REAL_PATH "test.sym" real_path BASE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
  10. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/test.txt")
  11. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/test.txt\"")
  12. endif()
  13. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dir/")
  14. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/")
  15. file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin/")
  16. file(CREATE_LINK "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin" "${CMAKE_CURRENT_BINARY_DIR}/dir/bin" SYMBOLIC)
  17. cmake_policy(SET CMP0152 NEW)
  18. file(REAL_PATH "${CMAKE_CURRENT_BINARY_DIR}/dir/bin/../" real_path)
  19. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir/nested")
  20. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir/nested\"")
  21. endif()
  22. file(REAL_PATH "${CMAKE_CURRENT_BINARY_DIR}/dir/bin/../bin" real_path)
  23. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin")
  24. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin\"")
  25. endif()
  26. file(REAL_PATH "dir/bin/../bin" real_path BASE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
  27. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin")
  28. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin\"")
  29. endif()
  30. file(REAL_PATH "../bin" real_path BASE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dir/bin/" )
  31. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin")
  32. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir/nested/bin\"")
  33. endif()
  34. cmake_policy(SET CMP0152 OLD)
  35. file(REAL_PATH "${CMAKE_CURRENT_BINARY_DIR}/dir/bin/../" real_path)
  36. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir")
  37. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir/nested\"")
  38. endif()
  39. file(REAL_PATH "../" real_path BASE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dir/bin/")
  40. if (NOT real_path STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/dir")
  41. message(SEND_ERROR "real path is \"${real_path}\", should be \"${CMAKE_CURRENT_BINARY_DIR}/dir\"")
  42. endif()
  43. endif()
  44. If (WIN32)
  45. cmake_path(SET HOME_DIR "$ENV{USERPROFILE}")
  46. if (NOT HOME_DIR)
  47. cmake_path(SET HOME_DIR "$ENV{HOME}")
  48. endif()
  49. else()
  50. set(HOME_DIR "$ENV{HOME}")
  51. endif()
  52. file(REAL_PATH "~" real_path EXPAND_TILDE)
  53. if (NOT real_path STREQUAL "${HOME_DIR}")
  54. message(SEND_ERROR "real path is \"${real_path}\", should be \"${HOME_DIR}\"")
  55. endif()
  56. file(REAL_PATH "~/test.txt" real_path EXPAND_TILDE)
  57. if (NOT real_path STREQUAL "${HOME_DIR}/test.txt")
  58. message(SEND_ERROR "real path is \"${real_path}\", should be \"${HOME_DIR}/test.txt\"")
  59. endif()
  60. if (WIN32)
  61. cmake_policy(SET CMP0139 NEW)
  62. set(in "${CMAKE_CURRENT_BINARY_DIR}/AbC.TxT")
  63. file(REMOVE "${in}")
  64. file(TOUCH "${in}")
  65. string(TOLOWER "${in}" low)
  66. file(REAL_PATH "${low}" out)
  67. if(NOT "${out}" PATH_EQUAL "${in}")
  68. message(SEND_ERROR "real path is \"${out}\", should be \"${in}\"")
  69. endif()
  70. endif()