ENH: Add C++ test too

This commit is contained in:
Andy Cedilnik 2005-07-31 23:05:05 -04:00
parent e898324778
commit 10b6e2a621
2 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,53 @@
#
# Check if the source code provided in the SOURCE argument compiles.
#
# CHECK_CXX_SOURCE_COMPILES - macro which checks if the source code compiles\
# SOURCE - source code to try to compile
# VARIABLE - variable to store size if the type exists.
#
# Checks the following optional VARIABLES (not arguments)
# CMAKE_REQUIRED_LIBRARIES - Link to extra libraries
# CMAKE_REQUIRED_FLAGS - Extra flags to C compiler
#
MACRO(CHECK_CXX_SOURCE_COMPILES SOURCE VAR)
IF("${VAR}" MATCHES "^${VAR}$")
SET(MACRO_CHECK_FUNCTION_DEFINITIONS
"-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
IF(CMAKE_REQUIRED_LIBRARIES)
SET(CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
ENDIF(CMAKE_REQUIRED_LIBRARIES)
IF(CMAKE_REQUIRED_INCLUDES)
SET(CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
ENDIF(CMAKE_REQUIRED_INCLUDES)
FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/src.c"
"${SOURCE}")
MESSAGE(STATUS "Performing Test ${VAR}")
TRY_COMPILE(${VAR}
${CMAKE_BINARY_DIR}
${CMAKE_BINARY_DIR}/CMakeTmp/src.cxx
CMAKE_FLAGS
"${CHECK_CXX_SOURCE_COMPILES_ADD_LIBRARIES}"
"${CHECK_CXX_SOURCE_COMPILES_ADD_INCLUDES}"
OUTPUT_VARIABLE OUTPUT)
IF(${VAR})
SET(${VAR} 1 CACHE INTERNAL "Test ${FUNCTION}")
MESSAGE(STATUS "Performing Test ${VAR} - Success")
WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
"Performing C++ SOURCE FILE Test ${VAR} succeded with the following output:\n"
"${OUTPUT}\n"
"Source file was:\n${SOURCE}\n" APPEND)
ELSE(${VAR})
MESSAGE(STATUS "Performing Test ${VAR} - Failed")
SET(${VAR} "" CACHE INTERNAL "Test ${FUNCTION}")
WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeError.log
"Performing C++ SOURCE FILE Test ${VAR} failed with the following output:\n"
"${OUTPUT}\n"
"Source file was:\n${SOURCE}\n" APPEND)
ENDIF(${VAR})
ENDIF("${VAR}" MATCHES "^${VAR}$")
ENDMACRO(CHECK_CXX_SOURCE_COMPILES)

View File

@ -1,5 +1,5 @@
# a simple C only test case
PROJECT (littleMacroTest C)
PROJECT (littleMacroTest)
SET(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
@ -69,4 +69,19 @@ ELSE(SOME_CHECK)
MESSAGE(FATAL_ERROR "CheckCSourceCompiles does not work")
ENDIF(SOME_CHECK)
INCLUDE(CheckCXXSourceCompiles)
Check_CXX_Source_Compiles(
"
#include <stdio.h>
int main(int ac, char*av[]){
if(ac > 1000){return *av[0];}
return 0;
}"
SOME_CHECK)
IF(SOME_CHECK)
MESSAGE("CheckCXXSourceCompiles works")
ELSE(SOME_CHECK)
MESSAGE(FATAL_ERROR "CheckCXXSourceCompiles does not work")
ENDIF(SOME_CHECK)
ADD_EXECUTABLE(MacroTest macroTest.c)