# # A more complex test case # PROJECT (Complex) # # Use the ansi CXX compile flag for building cmake # IF (CMAKE_ANSI_CXXFLAGS) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_ANSI_CXXFLAGS}") ENDIF (CMAKE_ANSI_CXXFLAGS) ADD_DEFINITIONS(-DCMAKE_IS_FUN) # # Include vars from a file and from a cache # IF (EXISTS ${Complex_SOURCE_DIR}/VarTests.cmake) INCLUDE(${Complex_SOURCE_DIR}/VarTests.cmake) ENDIF (EXISTS ${Complex_SOURCE_DIR}/VarTests.cmake) LOAD_CACHE(${Complex_SOURCE_DIR}/Cache EXCLUDE CACHE_TEST_VAR_EXCLUDED INCLUDE_INTERNALS CACHE_TEST_VAR_INTERNAL) # # Specify include and lib dirs # (BEFORE is for coverage) # INCLUDE_DIRECTORIES( ${Complex_SOURCE_DIR}/Library ${Complex_SOURCE_DIR}/../../Source ) INCLUDE_DIRECTORIES(BEFORE ${Complex_BINARY_DIR} ) INCLUDE_REGULAR_EXPRESSION("^(cmTest|file|sharedFile).*$" ".*") LINK_DIRECTORIES( ${Complex_BINARY_DIR}/Library ) # # Lib and exe path # SET (LIBRARY_OUTPUT_PATH ${Complex_BINARY_DIR}/bin/ CACHE PATH "Single output directory for building all libraries.") SET (EXECUTABLE_OUTPUT_PATH ${Complex_BINARY_DIR}/bin/ CACHE PATH "Single output directory for building all executables.") # # Exec program (TODO: test a result) # Increase coverage. # MESSAGE("\nIgnore this message") OPTION(NO_EXEC_PROGRAM "Do not test EXEC_PROGRAM" 0) IF (NOT NO_EXEC_PROGRAM) EXEC_PROGRAM("echo NO_EXEC_PROGRAM" "${Complex_BINARY_DIR}") ELSE (NOT NO_EXEC_PROGRAM) MESSAGE("Set this option ON") ENDIF (NOT NO_EXEC_PROGRAM) MARK_AS_ADVANCED(NO_EXEC_PROGRAM) MARK_AS_ADVANCED(CLEAR NO_EXEC_PROGRAM) # # Create directory. # The 'complex' executable will then test if this dir exists, # sadly it won't be able to remove it. # MAKE_DIRECTORY("${Complex_BINARY_DIR}/make_dir") # # Test FIND_LIBARY # Create a dummy empty lib # CONFIGURE_FILE( ${Complex_SOURCE_DIR}/Library/dummy ${Complex_BINARY_DIR}/Library/dummylib.lib COPYONLY IMMEDIATE) FOREACH (ext "${CMAKE_SHLIB_SUFFIX};.so;.a;.sl") CONFIGURE_FILE( ${Complex_SOURCE_DIR}/Library/dummy ${Complex_BINARY_DIR}/Library/libdummylib${ext} COPYONLY IMMEDIATE) ENDFOREACH (ext) FIND_LIBRARY(FIND_DUMMY_LIB dummylib PATHS ${Complex_BINARY_DIR}/Library) # # Test SET_SOURCE_FILES_PROPERTIES # SET_SOURCE_FILES_PROPERTIES(nonexisting_file2 GENERATED ABSTRACT WRAP_EXCLUDE COMPILE_FLAGS "-foo -bar") GET_SOURCE_FILE_PROPERTY(FILE_HAS_ABSTRACT nonexisting_file2 ABSTRACT) GET_SOURCE_FILE_PROPERTY(FILE_HAS_WRAP_EXCLUDE nonexisting_file2 WRAP_EXCLUDE) GET_SOURCE_FILE_PROPERTY(FILE_COMPILE_FLAGS nonexisting_file2 COMPILE_FLAGS) # # Configure file # (plug vars to #define so that they can be tested) # CONFIGURE_FILE( ${Complex_SOURCE_DIR}/cmTestConfigure.h.in ${Complex_BINARY_DIR}/cmTestConfigure.h) # # Create the libs and the main exe # SUBDIRS(Library Executable) SUBDIR_DEPENDS(Executable Library)