PackageRootNestedConfig.cmake 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. set(__UNDOCUMENTED_CMAKE_FIND_PACKAGE_ROOT 1)
  2. cmake_policy(SET CMP0057 NEW)
  3. list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/PackageRoot)
  4. set(PackageRoot_BASE ${CMAKE_CURRENT_SOURCE_DIR}/PackageRoot)
  5. function(PrintPath label path)
  6. string(REPLACE "${PackageRoot_BASE}" "<base>" out "${path}")
  7. message("${label}${out}")
  8. endfunction()
  9. macro(CleanUpPackageRootTest)
  10. unset(Foo_ROOT)
  11. unset(ENV{Foo_ROOT})
  12. unset(Bar_DIR)
  13. unset(BAR_CMAKE_FILE)
  14. unset(Bar_ROOT)
  15. unset(ENV{Bar_ROOT})
  16. unset(FOO_TEST_FILE_FOO)
  17. unset(FOO_TEST_FILE_ZOT)
  18. unset(FOO_TEST_PATH_FOO)
  19. unset(FOO_TEST_PATH_ZOT)
  20. unset(FOO_TEST_PROG_FOO)
  21. unset(BAR_TEST_FILE_FOO)
  22. unset(BAR_TEST_FILE_BAR)
  23. unset(BAR_TEST_FILE_ZOT)
  24. unset(BAR_TEST_PATH_FOO)
  25. unset(BAR_TEST_PATH_BAR)
  26. unset(BAR_TEST_PATH_ZOT)
  27. unset(BAR_TEST_PROG_FOO)
  28. unset(BAR_TEST_PROG_BAR)
  29. unset(Bar_DIR CACHE)
  30. unset(BAR_CMAKE_FILE CACHE)
  31. unset(FOO_TEST_FILE_FOO CACHE)
  32. unset(FOO_TEST_FILE_ZOT CACHE)
  33. unset(FOO_TEST_PATH_FOO CACHE)
  34. unset(FOO_TEST_PATH_ZOT CACHE)
  35. unset(FOO_TEST_PROG_FOO CACHE)
  36. unset(BAR_TEST_FILE_FOO CACHE)
  37. unset(BAR_TEST_FILE_BAR CACHE)
  38. unset(BAR_TEST_FILE_ZOT CACHE)
  39. unset(BAR_TEST_PATH_FOO CACHE)
  40. unset(BAR_TEST_PATH_BAR CACHE)
  41. unset(BAR_TEST_PATH_ZOT CACHE)
  42. unset(BAR_TEST_PROG_FOO CACHE)
  43. unset(BAR_TEST_PROG_BAR CACHE)
  44. endmacro()
  45. macro(RunPackageRootTest)
  46. message("----------")
  47. PrintPath("Foo_ROOT :" "${Foo_ROOT}")
  48. PrintPath("ENV{Foo_ROOT} :" "$ENV{Foo_ROOT}")
  49. PrintPath("Bar_DIR :" "${Bar_DIR}")
  50. PrintPath("Bar_ROOT :" "${Bar_ROOT}")
  51. PrintPath("ENV{Bar_ROOT} :" "$ENV{Bar_ROOT}")
  52. message("")
  53. find_package(Foo COMPONENTS BarConfig)
  54. message("find_package(Foo COMPONENTS BarConfig)")
  55. PrintPath("FOO_TEST_FILE_FOO :" "${FOO_TEST_FILE_FOO}")
  56. PrintPath("FOO_TEST_FILE_ZOT :" "${FOO_TEST_FILE_ZOT}")
  57. PrintPath("FOO_TEST_PATH_FOO :" "${FOO_TEST_PATH_FOO}")
  58. PrintPath("FOO_TEST_PATH_ZOT :" "${FOO_TEST_PATH_ZOT}")
  59. PrintPath("FOO_TEST_PROG_FOO :" "${FOO_TEST_PROG_FOO}")
  60. PrintPath("BAR_CMAKE_FILE :" "${BAR_CMAKE_FILE}")
  61. PrintPath("BAR_TEST_FILE_FOO :" "${BAR_TEST_FILE_FOO}")
  62. PrintPath("BAR_TEST_FILE_BAR :" "${BAR_TEST_FILE_BAR}")
  63. PrintPath("BAR_TEST_FILE_ZOT :" "${BAR_TEST_FILE_ZOT}")
  64. PrintPath("BAR_TEST_PATH_FOO :" "${BAR_TEST_PATH_FOO}")
  65. PrintPath("BAR_TEST_PATH_BAR :" "${BAR_TEST_PATH_BAR}")
  66. PrintPath("BAR_TEST_PATH_ZOT :" "${BAR_TEST_PATH_ZOT}")
  67. PrintPath("BAR_TEST_PROG_FOO :" "${BAR_TEST_PROG_FOO}")
  68. PrintPath("BAR_TEST_PROG_BAR :" "${BAR_TEST_PROG_BAR}")
  69. CleanUpPackageRootTest()
  70. message("")
  71. endmacro()
  72. #
  73. RunPackageRootTest()
  74. #
  75. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  76. RunPackageRootTest()
  77. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  78. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  79. RunPackageRootTest()
  80. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  81. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  82. RunPackageRootTest()
  83. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  84. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  85. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  86. RunPackageRootTest()
  87. #
  88. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  89. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  90. RunPackageRootTest()
  91. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  92. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  93. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  94. RunPackageRootTest()
  95. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  96. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  97. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  98. RunPackageRootTest()
  99. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  100. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  101. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  102. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  103. RunPackageRootTest()
  104. #
  105. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  106. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  107. RunPackageRootTest()
  108. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  109. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  110. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  111. RunPackageRootTest()
  112. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  113. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  114. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  115. RunPackageRootTest()
  116. set(Foo_ROOT ${PackageRoot_BASE}/foo/cmake_root)
  117. set(ENV{Foo_ROOT} ${PackageRoot_BASE}/foo/cmake_root)
  118. set(Bar_ROOT ${PackageRoot_BASE}/bar/cmake_root)
  119. set(ENV{Bar_ROOT} ${PackageRoot_BASE}/bar/env_root)
  120. RunPackageRootTest()