RunCMakeTest.cmake 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. cmake_minimum_required(VERSION 3.4)
  2. include(RunCMake)
  3. # Function to build and install a project. The latter step *-check.cmake
  4. # scripts can check installed files using the check_installed function.
  5. function(run_install_test case)
  6. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build)
  7. set(RunCMake_TEST_NO_CLEAN 1)
  8. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
  9. file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
  10. run_cmake(${case})
  11. run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug)
  12. # Check "all" components.
  13. set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-all)
  14. run_cmake_command(${case}-all ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -P cmake_install.cmake)
  15. # Check unspecified component.
  16. set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-uns)
  17. run_cmake_command(${case}-uns ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -DCOMPONENT=Unspecified -P cmake_install.cmake)
  18. # Check explicit component.
  19. set(CMAKE_INSTALL_PREFIX ${RunCMake_TEST_BINARY_DIR}/root-exc)
  20. run_cmake_command(${case}-exc ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} -DBUILD_TYPE=Debug -DCOMPONENT=exc -P cmake_install.cmake)
  21. endfunction()
  22. # Function called in *-check.cmake scripts to check installed files.
  23. function(check_installed expect)
  24. file(GLOB_RECURSE actual
  25. LIST_DIRECTORIES TRUE
  26. RELATIVE ${CMAKE_INSTALL_PREFIX}
  27. ${CMAKE_INSTALL_PREFIX}/*
  28. )
  29. if(actual)
  30. list(SORT actual)
  31. endif()
  32. if(NOT "${actual}" MATCHES "${expect}")
  33. set(RunCMake_TEST_FAILED "Installed files:
  34. ${actual}
  35. do not match what we expected:
  36. ${expect}
  37. in directory:
  38. ${CMAKE_INSTALL_PREFIX}" PARENT_SCOPE)
  39. endif()
  40. endfunction()
  41. run_cmake(DIRECTORY-MESSAGE_NEVER)
  42. run_cmake(DIRECTORY-PATTERN-MESSAGE_NEVER)
  43. run_cmake(DIRECTORY-message)
  44. run_cmake(DIRECTORY-message-lazy)
  45. run_cmake(SkipInstallRulesWarning)
  46. run_cmake(SkipInstallRulesNoWarning1)
  47. run_cmake(SkipInstallRulesNoWarning2)
  48. run_cmake(DIRECTORY-DIRECTORY-bad)
  49. run_cmake(DIRECTORY-DESTINATION-bad)
  50. run_cmake(FILES-DESTINATION-bad)
  51. run_cmake(TARGETS-DESTINATION-bad)
  52. run_cmake(EXPORT-OldIFace)
  53. run_cmake(CMP0062-OLD)
  54. run_cmake(CMP0062-NEW)
  55. run_cmake(CMP0062-WARN)
  56. run_install_test(FILES-EXCLUDE_FROM_ALL)
  57. run_install_test(TARGETS-EXCLUDE_FROM_ALL)