CMakeLists.txt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. #
  48. # Exec program (TODO: test a result)
  49. # Increase coverage.
  50. #
  51. MESSAGE("\nIgnore this message")
  52. OPTION(NO_EXEC_PROGRAM "Do not test EXEC_PROGRAM" 0)
  53. IF (NOT NO_EXEC_PROGRAM)
  54. EXEC_PROGRAM("echo NO_EXEC_PROGRAM" "${Complex_BINARY_DIR}")
  55. ELSE (NOT NO_EXEC_PROGRAM)
  56. MESSAGE("Set this option ON")
  57. ENDIF (NOT NO_EXEC_PROGRAM)
  58. MARK_AS_ADVANCED(NO_EXEC_PROGRAM)
  59. MARK_AS_ADVANCED(CLEAR NO_EXEC_PROGRAM)
  60. #
  61. # Create directory.
  62. # The 'complex' executable will then test if this dir exists,
  63. # sadly it won't be able to remove it.
  64. #
  65. MAKE_DIRECTORY("${Complex_BINARY_DIR}/make_dir")
  66. #
  67. # Test FIND_LIBARY
  68. # Create a dummy empty lib
  69. #
  70. FOREACH (ext "${CMAKE_SHLIB_SUFFIX};.lib;.so")
  71. CONFIGURE_FILE(
  72. ${Complex_SOURCE_DIR}/Library/dummy
  73. ${Complex_BINARY_DIR}/Library/dummylib${ext}
  74. COPYONLY IMMEDIATE)
  75. ENDFOREACH (ext)
  76. FIND_LIBRARY(FIND_DUMMY_LIB
  77. dummylib
  78. PATHS
  79. ${Complex_BINARY_DIR}/Library)
  80. #
  81. # Test SET_SOURCE_FILES_PROPERTIES
  82. #
  83. SET_SOURCE_FILES_PROPERTIES(nonexisting_file2
  84. GENERATED
  85. ABSTRACT
  86. WRAP_EXCLUDE
  87. COMPILE_FLAGS "-foo -bar")
  88. GET_SOURCE_FILE_PROPERTY(FILE_HAS_ABSTRACT nonexisting_file2 ABSTRACT)
  89. GET_SOURCE_FILE_PROPERTY(FILE_HAS_WRAP_EXCLUDE nonexisting_file2 WRAP_EXCLUDE)
  90. GET_SOURCE_FILE_PROPERTY(FILE_COMPILE_FLAGS nonexisting_file2 COMPILE_FLAGS)
  91. #
  92. # Configure file
  93. # (plug vars to #define so that they can be tested)
  94. #
  95. CONFIGURE_FILE(
  96. ${Complex_SOURCE_DIR}/cmTestConfigure.h.in
  97. ${Complex_BINARY_DIR}/cmTestConfigure.h)
  98. #
  99. # Create the libs and the main exe
  100. #
  101. SUBDIRS(Library Executable)
  102. SUBDIR_DEPENDS(Executable Library)