CMakeLists.txt 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. cmake_minimum_required(VERSION 2.8)
  2. project(ExternalProjectUpdateTest NONE)
  3. include(ExternalProject)
  4. find_package(Git)
  5. option(ExternalProjectUpdateTest_USE_FOLDERS "Enable folder grouping in IDEs." ON)
  6. if(ExternalProjectUpdateTest_USE_FOLDERS)
  7. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  8. else()
  9. set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
  10. endif()
  11. set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER
  12. "CMakePredefinedTargets-in-ExternalProjectUpdateTest")
  13. set(base "${CMAKE_BINARY_DIR}/CMakeExternals")
  14. set(binary_base "${base}/Build")
  15. set_property(DIRECTORY PROPERTY EP_BASE ${base})
  16. set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)
  17. set(do_git_tests 0)
  18. if(GIT_EXECUTABLE)
  19. set(do_git_tests 1)
  20. execute_process(
  21. COMMAND "${GIT_EXECUTABLE}" --version
  22. OUTPUT_VARIABLE ov
  23. OUTPUT_STRIP_TRAILING_WHITESPACE
  24. )
  25. string(REGEX REPLACE "^git version (.+)$" "\\1" git_version "${ov}")
  26. message(STATUS "git_version='${git_version}'")
  27. if(git_version VERSION_LESS 1.6.5)
  28. message(STATUS "No ExternalProject git tests with git client less than version 1.6.5")
  29. set(do_git_tests 0)
  30. endif()
  31. endif()
  32. # This should be specified from the command line.
  33. if(NOT TEST_GIT_TAG)
  34. set(TEST_GIT_TAG origin/master)
  35. endif()
  36. if(do_git_tests)
  37. set(local_git_repo "../../LocalRepositories/GIT")
  38. # Unzip/untar the git repository in our source folder so that other
  39. # projects below may use it to test git args of ExternalProject_Add
  40. #
  41. set(proj SetupLocalGITRepository)
  42. ExternalProject_Add(${proj}
  43. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT
  44. URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo.tgz
  45. BUILD_COMMAND ""
  46. CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version
  47. INSTALL_COMMAND ""
  48. )
  49. set_property(TARGET ${proj}
  50. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  51. set(proj TutorialStep1-GIT)
  52. ExternalProject_Add(${proj}
  53. GIT_REPOSITORY "${local_git_repo}"
  54. GIT_TAG ${TEST_GIT_TAG}
  55. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  56. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  57. INSTALL_COMMAND ""
  58. DEPENDS "SetupLocalGITRepository"
  59. )
  60. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  61. endif()
  62. # Test the testable built/installed products:
  63. #
  64. enable_testing()
  65. # Do at least a smoke test of a built executable from each
  66. # project's build directory...
  67. #
  68. # BuildTree tests:
  69. #
  70. if(do_git_tests)
  71. add_test(TutorialStep1-GIT
  72. "${binary_base}/TutorialStep1-GIT/Tutorial" 81)
  73. endif()
  74. message(STATUS "do_git_tests='${do_git_tests}'")
  75. message(STATUS "GIT_EXECUTABLE='${GIT_EXECUTABLE}'")