CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. #
  2. # A more complex test case
  3. #
  4. PROJECT (Complex)
  5. #
  6. # Use the ansi CXX compile flag for building cmake
  7. #
  8. IF (CMAKE_ANSI_CXXFLAGS)
  9. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_ANSI_CXXFLAGS}")
  10. ENDIF (CMAKE_ANSI_CXXFLAGS)
  11. ADD_DEFINITIONS(-DCMAKE_IS_FUN)
  12. #
  13. # Include vars from a file and from a cache
  14. #
  15. IF (EXISTS ${Complex_SOURCE_DIR}/VarTests.cmake)
  16. INCLUDE(${Complex_SOURCE_DIR}/VarTests.cmake)
  17. ENDIF (EXISTS ${Complex_SOURCE_DIR}/VarTests.cmake)
  18. LOAD_CACHE(${Complex_SOURCE_DIR}/Cache
  19. EXCLUDE
  20. CACHE_TEST_VAR_EXCLUDED
  21. INCLUDE_INTERNALS
  22. CACHE_TEST_VAR_INTERNAL)
  23. #
  24. # Specify include and lib dirs
  25. # (BEFORE is for coverage)
  26. #
  27. INCLUDE_DIRECTORIES(
  28. ${Complex_SOURCE_DIR}/Library
  29. ${Complex_SOURCE_DIR}/../../Source
  30. )
  31. INCLUDE_DIRECTORIES(BEFORE
  32. ${Complex_BINARY_DIR}
  33. )
  34. INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$" ".*")
  35. LINK_DIRECTORIES(
  36. ${Complex_BINARY_DIR}/Library
  37. )
  38. #
  39. # Lib and exe path
  40. #
  41. SET (LIBRARY_OUTPUT_PATH
  42. ${Complex_BINARY_DIR}/bin/ CACHE PATH
  43. "Single output directory for building all libraries.")
  44. SET (EXECUTABLE_OUTPUT_PATH
  45. ${Complex_BINARY_DIR}/bin/ CACHE PATH
  46. "Single output directory for building all executables.")
  47. MESSAGE (Test " " escape " " semi-colon " " \; \;)
  48. #
  49. # Exec program (TODO: test a result)
  50. # Increase coverage.
  51. #
  52. MESSAGE("\nIgnore this message")
  53. OPTION(NO_EXEC_PROGRAM "Do not test EXEC_PROGRAM" 0)
  54. IF (NOT NO_EXEC_PROGRAM)
  55. EXEC_PROGRAM("echo NO_EXEC_PROGRAM" "${Complex_BINARY_DIR}")
  56. EXEC_PROGRAM(echo ARGS NO_EXEC_PROGRAM "${Complex_BINARY_DIR}")
  57. ELSE (NOT NO_EXEC_PROGRAM)
  58. MESSAGE("Set this option ON")
  59. ENDIF (NOT NO_EXEC_PROGRAM)
  60. MARK_AS_ADVANCED(NO_EXEC_PROGRAM)
  61. MARK_AS_ADVANCED(CLEAR NO_EXEC_PROGRAM)
  62. #
  63. # Create directory.
  64. # The 'complex' executable will then test if this dir exists,
  65. # sadly it won't be able to remove it.
  66. #
  67. MAKE_DIRECTORY("${Complex_BINARY_DIR}/make_dir")
  68. #
  69. # Test FIND_LIBARY
  70. # Create a dummy empty lib
  71. #
  72. CONFIGURE_FILE(
  73. ${Complex_SOURCE_DIR}/Library/dummy
  74. ${Complex_BINARY_DIR}/Library/dummylib.lib
  75. COPYONLY IMMEDIATE)
  76. FOREACH (ext "${CMAKE_SHLIB_SUFFIX};.so;.a;.sl")
  77. CONFIGURE_FILE(
  78. ${Complex_SOURCE_DIR}/Library/dummy
  79. ${Complex_BINARY_DIR}/Library/libdummylib${ext}
  80. COPYONLY IMMEDIATE)
  81. ENDFOREACH (ext)
  82. FIND_LIBRARY(FIND_DUMMY_LIB
  83. dummylib
  84. PATHS
  85. ${Complex_BINARY_DIR}/Library)
  86. #
  87. # Test SET_SOURCE_FILES_PROPERTIES
  88. #
  89. SET_SOURCE_FILES_PROPERTIES(nonexisting_file2
  90. GENERATED
  91. ABSTRACT
  92. WRAP_EXCLUDE
  93. COMPILE_FLAGS "-foo -bar")
  94. GET_SOURCE_FILE_PROPERTY(FILE_HAS_ABSTRACT nonexisting_file2 ABSTRACT)
  95. GET_SOURCE_FILE_PROPERTY(FILE_HAS_WRAP_EXCLUDE nonexisting_file2 WRAP_EXCLUDE)
  96. GET_SOURCE_FILE_PROPERTY(FILE_COMPILE_FLAGS nonexisting_file2 COMPILE_FLAGS)
  97. #
  98. # Test registry (win32)
  99. # Create a file, put its path in a registry key, try to find the file in that
  100. # path using that registry key, then remove the file and the key
  101. #
  102. IF (WIN32)
  103. IF (NOT UNIX)
  104. SET(dir "${Complex_BINARY_DIR}/registry_dir")
  105. SET(file "registry_test_dummy")
  106. SET(hkey "HKEY_CURRENT_USER\\Software\\Kitware\\CMake\\Tests\\Complex;registry_test")
  107. CONFIGURE_FILE(
  108. ${Complex_SOURCE_DIR}/Library/dummy
  109. "${dir}/${file}"
  110. COPYONLY IMMEDIATE)
  111. EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "write_regv \"${hkey}\" \"${dir}\"")
  112. FIND_PATH(REGISTRY_TEST_PATH
  113. ${file}
  114. "[${hkey}]")
  115. EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "delete_regv \"${hkey}\"")
  116. EXEC_PROGRAM(${CCOMMAND_COMMAND} ARGS "remove \"${dir}/${file}\"")
  117. ENDIF (NOT UNIX)
  118. ENDIF (WIN32)
  119. #
  120. # Test a set and a remove
  121. #
  122. SET(REMOVE_STRING a b c d e f)
  123. SET(removeVar1 c e)
  124. REMOVE(REMOVE_STRING ${removeVar1} f)
  125. #
  126. # Configure file
  127. # (plug vars to #define so that they can be tested)
  128. #
  129. CONFIGURE_FILE(
  130. ${Complex_SOURCE_DIR}/cmTestConfigure.h.in
  131. ${Complex_BINARY_DIR}/cmTestConfigure.h)
  132. #
  133. # Create the libs and the main exe
  134. #
  135. SUBDIRS(Library Executable)
  136. SUBDIR_DEPENDS(Executable Library)