DirOverrides.cmake 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. include(FetchContent)
  2. # Test using saved details
  3. FetchContent_Declare(
  4. t1
  5. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/savedSrc
  6. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/savedBin
  7. DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR> <BINARY_DIR>
  8. )
  9. FetchContent_Populate(t1)
  10. if(NOT IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/savedSrc)
  11. message(FATAL_ERROR "Saved details SOURCE_DIR override failed")
  12. endif()
  13. if(NOT IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/savedBin)
  14. message(FATAL_ERROR "Saved details BINARY_DIR override failed")
  15. endif()
  16. # Test direct population
  17. FetchContent_Populate(
  18. t2
  19. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/directSrc
  20. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/directBin
  21. DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR> <BINARY_DIR>
  22. )
  23. if(NOT IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/directSrc)
  24. message(FATAL_ERROR "Direct details SOURCE_DIR override failed")
  25. endif()
  26. # Ensure setting BINARY_DIR to SOURCE_DIR works (a technique to
  27. # prevent an unwanted separate BINARY_DIR from being created, which
  28. # ExternalProject_Add() does whether we like it or not)
  29. FetchContent_Declare(
  30. t3
  31. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/savedNoBuildDir
  32. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/savedNoBuildDir
  33. DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>
  34. )
  35. FetchContent_Populate(t3)
  36. if(IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/savedNobuildDir-build)
  37. message(FATAL_ERROR "Saved details BINARY_DIR override failed")
  38. endif()
  39. FetchContent_Populate(
  40. t4
  41. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/directNoBuildDir
  42. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/directNoBuildDir
  43. DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E make_directory <SOURCE_DIR>
  44. )
  45. if(IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/savedNobuildDir-build)
  46. message(FATAL_ERROR "Direct details BINARY_DIR override failed")
  47. endif()
  48. # Test overriding the source directory by reusing the one from t1
  49. set(FETCHCONTENT_SOURCE_DIR_T5 ${CMAKE_CURRENT_BINARY_DIR}/savedSrc)
  50. FetchContent_Declare(
  51. t5
  52. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/doesNotExist
  53. BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/wontBeCreated
  54. DOWNLOAD_COMMAND ${CMAKE_COMMAND} -E false
  55. )
  56. FetchContent_Populate(t5)
  57. if(NOT "${t5_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/savedSrc")
  58. message(FATAL_ERROR "Wrong SOURCE_DIR returned: ${t5_SOURCE_DIR}")
  59. endif()
  60. if(NOT "${t5_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}/wontBeCreated")
  61. message(FATAL_ERROR "Wrong BINARY_DIR returned: ${t5_BINARY_DIR}")
  62. endif()