PROJECT(LoadedCommand) # set a definition SET (TEST_COMMAND_TEST1 1) INCLUDE (${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) CHECK_TYPE_SIZE(char SIZEOF_CHAR) CHECK_TYPE_SIZE(short SIZEOF_SHORT) INCLUDE (CheckFunctionExists) CHECK_FUNCTION_EXISTS(printf HAVE_PRINTF) CHECK_FUNCTION_EXISTS(vsblabla HAVE_VSBLABLA) INCLUDE (${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) CHECK_INCLUDE_FILE("sys/prctl.h" HAVE_SYS_PRCTL_H) INCLUDE (${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake) CHECK_LIBRARY_EXISTS(m ceil "" HAVE_LIBM) CONFIGURE_FILE(${LoadedCommand_SOURCE_DIR}/LoadedCommand.h.in ${LoadedCommand_BINARY_DIR}/LoadedCommand.h) INCLUDE_DIRECTORIES(${LoadedCommand_BINARY_DIR}) # try to compile the command # make sure it is not already loaded IF(COMMAND CMAKE_TEST_COMMAND) ELSE(COMMAND CMAKE_TEST_COMMAND) TRY_COMPILE(COMPILE_OK ${LoadedCommand_BINARY_DIR}/CMakeCommands ${LoadedCommand_SOURCE_DIR}/CMakeCommands CMAKE_LOADED_COMMANDS CMAKE_FLAGS -DMUDSLIDE_TYPE:STRING=MUCHO OUTPUT_VARIABLE OUTPUT ) # do another TRY_COMPILE to get around make # problem on hp TRY_COMPILE(COMPILE_OK ${LoadedCommand_BINARY_DIR}/CMakeCommands ${LoadedCommand_SOURCE_DIR}/CMakeCommands CMAKE_LOADED_COMMANDS CMAKE_FLAGS -DMUDSLIDE_TYPE:STRING=MUCHO OUTPUT_VARIABLE OUTPUT ) ENDIF(COMMAND CMAKE_TEST_COMMAND) MESSAGE("Output from try compile: ${OUTPUT}") # if the compile was OK, try loading the command IF (COMPILE_OK) LOAD_COMMAND(CMAKE_TEST_COMMAND ${LoadedCommand_BINARY_DIR}/CMakeCommands ${LoadedCommand_BINARY_DIR}/CMakeCommands/Debug ) # if the command loaded, execute the command IF (COMMAND CMAKE_TEST_COMMAND) CMAKE_TEST_COMMAND() ENDIF (COMMAND CMAKE_TEST_COMMAND) ELSE (COMPILE_OK) MESSAGE("failed to compile CMAKE_LOADED_COMMANDS") ENDIF (COMPILE_OK) # TEST_DEF is set by the loaded command cmTestCommand.c IF (TEST_DEF AND SOME_CACHE_VARIABLE) ADD_DEFINITIONS(-DCMAKE_IS_FUN) ENDIF (TEST_DEF AND SOME_CACHE_VARIABLE) ADD_EXECUTABLE (LoadedCommand LoadedCommand.cxx)