CMakeLists.txt 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. cmake_minimum_required(VERSION 2.8)
  2. project(ExternalProjectTest NONE)
  3. include(ExternalProject)
  4. find_package(CVS)
  5. find_package(Subversion)
  6. find_package(Git)
  7. option(ExternalProjectTest_USE_FOLDERS "Enable folder grouping in IDEs." ON)
  8. if(ExternalProjectTest_USE_FOLDERS)
  9. set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  10. else()
  11. set_property(GLOBAL PROPERTY USE_FOLDERS OFF)
  12. endif()
  13. set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER
  14. "CMakePredefinedTargets-in-ExternalProjectTest")
  15. set(base "${CMAKE_BINARY_DIR}/CMakeExternals")
  16. set(binary_base "${base}/Build")
  17. set_property(DIRECTORY PROPERTY EP_BASE ${base})
  18. set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)
  19. if(NOT DEFINED can_build_tutorial_step5)
  20. set(can_build_tutorial_step5 1)
  21. # Tutorial Step5 cannot build correctly using Visual Studio 6
  22. # on Windows 98 if the path of its build tree exceeds 72
  23. # characters in length... So don't attempt to build it
  24. # in a long path on Win98:
  25. #
  26. if(CMAKE_SYSTEM STREQUAL "Windows-4.10")
  27. string(LENGTH "${binary_base}/TutorialStep5-Local" n)
  28. if(n GREATER 72)
  29. set(can_build_tutorial_step5 0)
  30. endif()
  31. endif()
  32. # The ExternalProject builds of Tutorial Step5 cannot be built
  33. # correctly 2nd and later times in an in-source build...
  34. # (because the CMakeCache.txt from the real in-source build of
  35. # the Tests/Tutorial/Step5 directory gets copied when we do
  36. # the "source directory copy" step... but it still refers to
  37. # its original path which yields a configure error.) So:
  38. #
  39. if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
  40. set(can_build_tutorial_step5 0)
  41. endif()
  42. endif()
  43. # Empty projects that test all the known ExternalProject_Add argument key words:
  44. #
  45. set(proj AAA-TestAlphabetization)
  46. ExternalProject_Add(${proj}
  47. BUILD_COMMAND ""
  48. CONFIGURE_COMMAND ""
  49. DOWNLOAD_COMMAND ""
  50. INSTALL_COMMAND ""
  51. )
  52. set(proj ZZZ-TestAlphabetization)
  53. ExternalProject_Add(${proj}
  54. BUILD_COMMAND ""
  55. CONFIGURE_COMMAND ""
  56. DOWNLOAD_COMMAND ""
  57. INSTALL_COMMAND ""
  58. )
  59. set(proj TargetNameSameAsFolder)
  60. ExternalProject_Add(${proj}
  61. BUILD_COMMAND ""
  62. CONFIGURE_COMMAND ""
  63. DOWNLOAD_COMMAND ""
  64. INSTALL_COMMAND ""
  65. )
  66. set_property(TARGET ${proj} PROPERTY FOLDER "${proj}")
  67. set(proj MinimalNoOpProject)
  68. ExternalProject_Add(${proj}
  69. BUILD_COMMAND ""
  70. CONFIGURE_COMMAND ""
  71. DOWNLOAD_COMMAND ""
  72. INSTALL_COMMAND ""
  73. )
  74. set(proj EmptyNoOpProject)
  75. ExternalProject_Add(${proj}
  76. BUILD_COMMAND ""
  77. CMAKE_ARGS ""
  78. CONFIGURE_COMMAND ""
  79. CVS_REPOSITORY ""
  80. CVS_MODULE ""
  81. CVS_TAG ""
  82. DEPENDS "MinimalNoOpProject"
  83. DOWNLOAD_COMMAND ""
  84. INSTALL_COMMAND ""
  85. PATCH_COMMAND ""
  86. STEP_TARGETS install update
  87. SVN_REPOSITORY ""
  88. SVN_REVISION ""
  89. TEST_COMMAND ""
  90. TIMEOUT ""
  91. URL ""
  92. URL_MD5 ""
  93. UPDATE_COMMAND ""
  94. )
  95. set_property(TARGET ${proj} PROPERTY FOLDER "")
  96. # Local DIR:
  97. #
  98. if(can_build_tutorial_step5)
  99. set(proj TutorialStep5-Local)
  100. ExternalProject_Add(${proj}
  101. URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
  102. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
  103. TEST_BEFORE_INSTALL 1
  104. LOG_INSTALL 1
  105. )
  106. set_property(TARGET ${proj} PROPERTY FOLDER "Local")
  107. ExternalProject_Get_Property(${proj} install_dir)
  108. set(TutorialStep5_install_dir ${install_dir})
  109. set(proj TutorialStep5-Local-TestAfterInstall)
  110. ExternalProject_Add(${proj}
  111. URL "${CMAKE_CURRENT_SOURCE_DIR}/../Tutorial/Step5"
  112. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
  113. TEST_AFTER_INSTALL 1
  114. LOG_TEST 1
  115. )
  116. set_property(TARGET ${proj} PROPERTY FOLDER "Local")
  117. endif()
  118. # Local TAR:
  119. #
  120. set(proj TutorialStep1-LocalTAR)
  121. ExternalProject_Add(${proj}
  122. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar"
  123. URL_MD5 a87c5b47c0201c09ddfe1d5738fdb1e3
  124. LIST_SEPARATOR ::
  125. PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/Step1Patch.cmake
  126. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  127. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  128. -DTEST_LIST:STRING=A::B::C
  129. INSTALL_COMMAND ""
  130. LOG_CONFIGURE 1
  131. )
  132. set_property(TARGET ${proj} PROPERTY FOLDER "Local/TAR")
  133. set(proj TutorialStep1-LocalNoDirTAR)
  134. ExternalProject_Add(${proj}
  135. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar"
  136. URL_MD5 d09e3d370c5c908fa035c30939ee438e
  137. LIST_SEPARATOR @@
  138. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
  139. -DTEST_LIST:STRING=1@@2@@3
  140. INSTALL_COMMAND ""
  141. )
  142. set_property(TARGET ${proj} PROPERTY FOLDER "Local/TAR")
  143. ExternalProject_Add_Step(${proj} mypatch
  144. COMMAND ${CMAKE_COMMAND} -E echo "This is a custom external project step."
  145. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/Step1Patch.cmake
  146. WORKING_DIRECTORY <SOURCE_DIR>
  147. DEPENDEES download
  148. DEPENDERS configure
  149. )
  150. # Local TGZ:
  151. #
  152. set(proj TutorialStep1-LocalTGZ)
  153. ExternalProject_Add(${proj}
  154. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tgz"
  155. URL_MD5 38c648e817339c356f6be00eeed79bd0
  156. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -G ${CMAKE_GENERATOR} <SOURCE_DIR>
  157. INSTALL_COMMAND ""
  158. LOG_BUILD 1
  159. )
  160. set_property(TARGET ${proj} PROPERTY FOLDER "Local/TGZ")
  161. set(proj TutorialStep1-LocalNoDirTGZ)
  162. ExternalProject_Add(${proj}
  163. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tgz"
  164. URL_MD5 0b8182edcecdf40bf1c9d71d7d259f78
  165. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  166. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  167. INSTALL_COMMAND ""
  168. )
  169. set_property(TARGET ${proj} PROPERTY FOLDER "Local/TGZ")
  170. # Local BZ2:
  171. #
  172. # (The bz2 tests are here just to verify that the bz2 decompression is executed
  173. # during a test suite run... The configure and build commands are set to
  174. # nothing to make the test quicker. To make this more complete, I should add
  175. # a diff between this and the TGZ source tree since that one does build...)
  176. #
  177. set(proj TutorialStep1-LocalBZ2)
  178. ExternalProject_Add(${proj}
  179. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar.bz2"
  180. CONFIGURE_COMMAND ""
  181. BUILD_COMMAND ""
  182. INSTALL_COMMAND ""
  183. )
  184. set_property(TARGET ${proj} PROPERTY FOLDER "Local/BZ2")
  185. set(proj TutorialStep1-LocalNoDirBZ2)
  186. ExternalProject_Add(${proj}
  187. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar.bz2"
  188. CONFIGURE_COMMAND ""
  189. BUILD_COMMAND ""
  190. INSTALL_COMMAND ""
  191. )
  192. set_property(TARGET ${proj} PROPERTY FOLDER "Local/BZ2")
  193. # Local ZIP:
  194. #
  195. # (The zip tests are here just to verify that the zip decompression is executed
  196. # during a test suite run... The configure and build commands are set to
  197. # nothing to make the test quicker. To make this more complete, I should add
  198. # a diff between this and the TGZ source tree since that one does build...)
  199. #
  200. set(proj TutorialStep1-LocalZIP)
  201. ExternalProject_Add(${proj}
  202. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.zip"
  203. CONFIGURE_COMMAND ""
  204. BUILD_COMMAND ""
  205. INSTALL_COMMAND ""
  206. )
  207. set_property(TARGET ${proj} PROPERTY FOLDER "Local/ZIP")
  208. set(proj TutorialStep1-LocalNoDirZIP)
  209. ExternalProject_Add(${proj}
  210. URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.zip"
  211. CONFIGURE_COMMAND ""
  212. BUILD_COMMAND ""
  213. INSTALL_COMMAND ""
  214. )
  215. set_property(TARGET ${proj} PROPERTY FOLDER "Local/ZIP")
  216. # CVS-based tests:
  217. #
  218. set(do_cvs_tests 0)
  219. if(CVS_EXECUTABLE)
  220. set(do_cvs_tests 1)
  221. endif()
  222. if(do_cvs_tests AND NOT UNIX)
  223. if("${CVS_EXECUTABLE}" MATCHES "cygwin")
  224. message(STATUS "No ExternalProject cvs tests with cygwin cvs.exe outside cygwin!")
  225. set(do_cvs_tests 0)
  226. endif()
  227. endif()
  228. if(do_cvs_tests)
  229. # Unzip/untar the CVS repository in our source folder so that other
  230. # projects below may use it to test CVS args of ExternalProject_Add
  231. #
  232. set(proj SetupLocalCVSRepository)
  233. set(local_cvs_repo "${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/CVS")
  234. ExternalProject_Add(${proj}
  235. SOURCE_DIR ${local_cvs_repo}
  236. URL ${CMAKE_CURRENT_SOURCE_DIR}/cvsrepo.tgz
  237. URL_MD5 55fc85825ffdd9ed2597123c68b79f7e
  238. BUILD_COMMAND ""
  239. CONFIGURE_COMMAND "${CVS_EXECUTABLE}" --version
  240. INSTALL_COMMAND ""
  241. )
  242. set_property(TARGET ${proj}
  243. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  244. # CVS by date stamp:
  245. #
  246. set(proj TutorialStep1-CVS-20090626)
  247. ExternalProject_Add(${proj}
  248. CVS_REPOSITORY "${local_cvs_repo}"
  249. CVS_MODULE "TutorialStep1"
  250. CVS_TAG "-D2009-06-26 16:50:00 UTC"
  251. UPDATE_COMMAND ""
  252. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  253. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  254. INSTALL_COMMAND ""
  255. DEPENDS "SetupLocalCVSRepository"
  256. )
  257. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  258. # CVS by tag:
  259. #
  260. set(proj TutorialStep1-CVS-testtag1)
  261. ExternalProject_Add(${proj}
  262. CVS_REPOSITORY "${local_cvs_repo}"
  263. CVS_MODULE "TutorialStep1"
  264. CVS_TAG -rtesttag1
  265. UPDATE_COMMAND ""
  266. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  267. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  268. INSTALL_COMMAND ""
  269. DEPENDS "SetupLocalCVSRepository"
  270. )
  271. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  272. # Live CVS / HEAD (no CVS_TAG):
  273. #
  274. set(proj TutorialStep1-CVS-HEAD)
  275. ExternalProject_Add(${proj}
  276. CVS_REPOSITORY "${local_cvs_repo}"
  277. CVS_MODULE "TutorialStep1"
  278. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  279. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  280. INSTALL_COMMAND ""
  281. DEPENDS "SetupLocalCVSRepository"
  282. DEPENDS "EmptyNoOpProject"
  283. DEPENDS "TutorialStep1-LocalTAR"
  284. DEPENDS "TutorialStep1-LocalNoDirTAR"
  285. DEPENDS "TutorialStep1-LocalTGZ"
  286. DEPENDS "TutorialStep1-LocalNoDirTGZ"
  287. DEPENDS "TutorialStep1-CVS-20090626"
  288. DEPENDS "TutorialStep1-CVS-testtag1"
  289. )
  290. set_property(TARGET ${proj} PROPERTY FOLDER "CVS")
  291. endif()
  292. # SVN-based tests:
  293. #
  294. set(do_svn_tests 0)
  295. if(Subversion_SVN_EXECUTABLE)
  296. set(do_svn_tests 1)
  297. endif()
  298. # Only do svn tests with svn >= version 1.2
  299. #
  300. if(do_svn_tests)
  301. execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} --version
  302. OUTPUT_VARIABLE Subversion_VERSION_SVN
  303. OUTPUT_STRIP_TRAILING_WHITESPACE)
  304. string(REGEX REPLACE "^(.*\n)?svn, version ([.0-9]+).*"
  305. "\\2" Subversion_VERSION_SVN "${Subversion_VERSION_SVN}")
  306. message(STATUS "Subversion_VERSION_SVN='${Subversion_VERSION_SVN}'")
  307. if(Subversion_VERSION_SVN VERSION_LESS 1.2)
  308. message(STATUS "No ExternalProject svn tests with svn client less than version 1.2")
  309. set(do_svn_tests 0)
  310. endif()
  311. endif()
  312. # Only do svn tests in cygwin/cygwin or not-cygwin/not-cygwin arrangements:
  313. #
  314. if(do_svn_tests)
  315. if(CMAKE_CURRENT_BINARY_DIR MATCHES "cygdrive/" AND
  316. NOT "${Subversion_SVN_EXECUTABLE}" MATCHES "cygwin")
  317. message(STATUS "No ExternalProject svn tests with non-cygwin svn client in a /cygdrive based build")
  318. set(do_svn_tests 0)
  319. endif()
  320. endif()
  321. if(do_svn_tests)
  322. # Unzip/untar the SVN repository in our source folder so that other
  323. # projects below may use it to test SVN args of ExternalProject_Add
  324. #
  325. set(proj SetupLocalSVNRepository)
  326. set(local_svn_repo "${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/SVN")
  327. set(local_svn_repo_url "file:///${local_svn_repo}/TutorialStep1")
  328. ExternalProject_Add(${proj}
  329. SOURCE_DIR ${local_svn_repo}
  330. URL ${CMAKE_CURRENT_SOURCE_DIR}/svnrepo.tgz
  331. URL_MD5 2f468be4ed1fa96377fca0cc830819c4
  332. BUILD_COMMAND ""
  333. CONFIGURE_COMMAND "${Subversion_SVN_EXECUTABLE}" --version
  334. INSTALL_COMMAND ""
  335. )
  336. set_property(TARGET ${proj}
  337. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  338. # SVN by date stamp:
  339. #
  340. set(proj TutorialStep1-SVN-20090626)
  341. ExternalProject_Add(${proj}
  342. SVN_REPOSITORY "${local_svn_repo_url}"
  343. SVN_REVISION "-r{2009-06-26 16:50:00 +0000}"
  344. UPDATE_COMMAND ""
  345. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  346. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  347. INSTALL_COMMAND ""
  348. DEPENDS "SetupLocalSVNRepository"
  349. )
  350. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  351. # SVN by revision number:
  352. #
  353. set(proj TutorialStep1-SVN-r2)
  354. ExternalProject_Add(${proj}
  355. SVN_REPOSITORY "${local_svn_repo_url}"
  356. SVN_REVISION "-r2"
  357. UPDATE_COMMAND ""
  358. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  359. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  360. INSTALL_COMMAND ""
  361. DEPENDS "SetupLocalSVNRepository"
  362. )
  363. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  364. # Live SVN / trunk (no SVN_REVISION):
  365. #
  366. set(proj TutorialStep1-SVN-trunk)
  367. ExternalProject_Add(${proj}
  368. SVN_REPOSITORY "${local_svn_repo_url}"
  369. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  370. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  371. INSTALL_COMMAND ""
  372. DEPENDS "SetupLocalSVNRepository"
  373. LOG_DOWNLOAD 1
  374. )
  375. set_property(TARGET ${proj} PROPERTY FOLDER "SVN")
  376. endif()
  377. set(do_git_tests 0)
  378. if(GIT_EXECUTABLE)
  379. set(do_git_tests 1)
  380. execute_process(
  381. COMMAND "${GIT_EXECUTABLE}" --version
  382. OUTPUT_VARIABLE ov
  383. OUTPUT_STRIP_TRAILING_WHITESPACE
  384. )
  385. string(REGEX REPLACE "^git version (.+)$" "\\1" git_version "${ov}")
  386. message(STATUS "git_version='${git_version}'")
  387. if(git_version VERSION_LESS 1.6.5)
  388. message(STATUS "No ExternalProject git tests with git client less than version 1.6.5")
  389. set(do_git_tests 0)
  390. endif()
  391. endif()
  392. if(do_git_tests)
  393. set(local_git_repo "../../LocalRepositories/GIT")
  394. # Unzip/untar the git repository in our source folder so that other
  395. # projects below may use it to test git args of ExternalProject_Add
  396. #
  397. set(proj SetupLocalGITRepository)
  398. ExternalProject_Add(${proj}
  399. SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/LocalRepositories/GIT
  400. URL ${CMAKE_CURRENT_SOURCE_DIR}/gitrepo.tgz
  401. BUILD_COMMAND ""
  402. CONFIGURE_COMMAND "${GIT_EXECUTABLE}" --version
  403. INSTALL_COMMAND ""
  404. )
  405. set_property(TARGET ${proj}
  406. PROPERTY FOLDER "SetupRepos/Local/Deeply/Nested/For/Testing")
  407. # git by commit id:
  408. #
  409. set(proj TutorialStep1-GIT-byhash)
  410. ExternalProject_Add(${proj}
  411. GIT_REPOSITORY "${local_git_repo}"
  412. GIT_TAG d1970730310fe8bc07e73f15dc570071f9f9654a
  413. UPDATE_COMMAND ""
  414. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  415. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  416. INSTALL_COMMAND ""
  417. DEPENDS "SetupLocalGITRepository"
  418. )
  419. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  420. # git by explicit branch/tag name:
  421. #
  422. set(proj TutorialStep1-GIT-bytag)
  423. ExternalProject_Add(${proj}
  424. GIT_REPOSITORY "${local_git_repo}"
  425. GIT_TAG "origin/master"
  426. UPDATE_COMMAND ""
  427. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  428. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  429. INSTALL_COMMAND ""
  430. DEPENDS "SetupLocalGITRepository"
  431. )
  432. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  433. # Live git / master (no GIT_TAG):
  434. #
  435. set(proj TutorialStep1-GIT-master)
  436. ExternalProject_Add(${proj}
  437. GIT_REPOSITORY "${local_git_repo}"
  438. CMAKE_GENERATOR "${CMAKE_GENERATOR}"
  439. CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
  440. INSTALL_COMMAND ""
  441. DEPENDS "SetupLocalGITRepository"
  442. LOG_UPDATE 1
  443. )
  444. set_property(TARGET ${proj} PROPERTY FOLDER "GIT")
  445. endif()
  446. # Test the testable built/installed products:
  447. #
  448. enable_testing()
  449. # Do at least a smoke test of a built executable from each
  450. # project's build directory...
  451. #
  452. # BuildTree tests:
  453. #
  454. if(can_build_tutorial_step5)
  455. add_test(TutorialStep5-Local-BuildTreeTest
  456. "${binary_base}/TutorialStep5-Local/Tutorial" 42)
  457. set_property(TEST TutorialStep5-Local-BuildTreeTest
  458. APPEND PROPERTY LABELS Step5 BuildTree)
  459. endif()
  460. add_test(TutorialStep1-LocalTAR-BuildTreeTest
  461. "${binary_base}/TutorialStep1-LocalTAR/EP-Tutorial" 36)
  462. set_property(TEST TutorialStep1-LocalTAR-BuildTreeTest
  463. APPEND PROPERTY LABELS TAR)
  464. add_test(TutorialStep1-LocalNoDirTAR-BuildTreeTest
  465. "${binary_base}/TutorialStep1-LocalNoDirTAR/EP-Tutorial" 25)
  466. add_test(TutorialStep1-LocalTGZ-BuildTreeTest
  467. "${binary_base}/TutorialStep1-LocalTGZ/Tutorial" 16)
  468. set_property(TEST TutorialStep1-LocalTGZ-BuildTreeTest
  469. APPEND PROPERTY LABELS TGZ)
  470. add_test(TutorialStep1-LocalNoDirTGZ-BuildTreeTest
  471. "${binary_base}/TutorialStep1-LocalNoDirTGZ/Tutorial" 9)
  472. if(do_cvs_tests)
  473. add_test(TutorialStep1-CVS-20090626-BuildTreeTest
  474. "${binary_base}/TutorialStep1-CVS-20090626/Tutorial" 4)
  475. add_test(TutorialStep1-CVS-testtag1-BuildTreeTest
  476. "${binary_base}/TutorialStep1-CVS-testtag1/Tutorial" 64)
  477. add_test(TutorialStep1-CVS-HEAD-BuildTreeTest
  478. "${binary_base}/TutorialStep1-CVS-HEAD/Tutorial" 81)
  479. endif()
  480. if(do_svn_tests)
  481. add_test(TutorialStep1-SVN-20090626-BuildTreeTest
  482. "${binary_base}/TutorialStep1-SVN-20090626/Tutorial" 100)
  483. add_test(TutorialStep1-SVN-r2-BuildTreeTest
  484. "${binary_base}/TutorialStep1-SVN-r2/Tutorial" 99)
  485. add_test(TutorialStep1-SVN-trunk-BuildTreeTest
  486. "${binary_base}/TutorialStep1-SVN-trunk/Tutorial" 98)
  487. endif()
  488. # InstallTree tests:
  489. #
  490. if(can_build_tutorial_step5)
  491. add_test(TutorialStep5-InstallTreeTest
  492. "${TutorialStep5_install_dir}/bin/Tutorial" 49)
  493. set_property(TEST TutorialStep5-InstallTreeTest
  494. APPEND PROPERTY LABELS Step5 InstallTree)
  495. endif()
  496. message(STATUS "can_build_tutorial_step5='${can_build_tutorial_step5}'")
  497. message(STATUS "do_cvs_tests='${do_cvs_tests}'")
  498. message(STATUS "do_svn_tests='${do_svn_tests}'")
  499. message(STATUS "do_git_tests='${do_git_tests}'")
  500. message(STATUS "GIT_EXECUTABLE='${GIT_EXECUTABLE}'")