CMakeLists.txt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. cmake_minimum_required (VERSION 2.6)
  2. PROJECT(MakeClean)
  3. # Build the to-clean project.
  4. TRY_COMPILE(TOCLEAN_BUILT
  5. ${MakeClean_BINARY_DIR}/ToClean
  6. ${MakeClean_SOURCE_DIR}/ToClean
  7. ToClean
  8. OUTPUT_VARIABLE OUTPUT
  9. )
  10. IF(TOCLEAN_BUILT)
  11. MESSAGE(
  12. "Building ToClean succeeded with the following output:\n"
  13. "[${OUTPUT}]"
  14. )
  15. ELSE(TOCLEAN_BUILT)
  16. MESSAGE(FATAL_ERROR
  17. "Building ToClean failed with the following output:\n"
  18. "[${OUTPUT}]"
  19. )
  20. ENDIF(TOCLEAN_BUILT)
  21. # Get the set of files to check from the ToClean project.
  22. INCLUDE(${MakeClean_BINARY_DIR}/ToClean/ToCleanFiles.cmake)
  23. # Check for the existence of the files.
  24. FOREACH(f ${TOCLEAN_FILES})
  25. IF(EXISTS "${f}")
  26. ELSE(EXISTS "${f}")
  27. MESSAGE(FATAL_ERROR "File \"${f}\" does not exist!")
  28. ENDIF(EXISTS "${f}")
  29. ENDFOREACH(f)
  30. # Configure an executable to check that all the files are missing.
  31. SET(CHECK_FILES)
  32. FOREACH(f ${TOCLEAN_FILES})
  33. SET(CHECK_FILES "${CHECK_FILES} \"${f}\",\n")
  34. ENDFOREACH(f)
  35. CONFIGURE_FILE(${MakeClean_SOURCE_DIR}/check_clean.c.in
  36. ${MakeClean_BINARY_DIR}/check_clean.c @ONLY IMMEDIATE)
  37. ADD_EXECUTABLE(check_clean ${MakeClean_BINARY_DIR}/check_clean.c)
  38. # After the executable builds, clean the files.
  39. ADD_CUSTOM_COMMAND(
  40. TARGET check_clean
  41. POST_BUILD
  42. COMMAND ${CMAKE_CTEST_COMMAND}
  43. ARGS --build-and-test
  44. ${MakeClean_SOURCE_DIR}/ToClean
  45. ${MakeClean_BINARY_DIR}/ToClean
  46. --build-generator ${CMAKE_GENERATOR}
  47. --build-project ToClean
  48. --build-makeprogram ${CMAKE_MAKE_PROGRAM}
  49. --build-noclean
  50. --build-target clean
  51. COMMENT "Clean the ToClean Project"
  52. )