1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
# include several source files (in SRCS) in one or more
# combined files; each combined file holds maximally
# MAXNUM files.
# BASE gives basename for created files;
# files corresponding to the pattern are deleted
# first, so that there are no relicts from previous runs
# with possibly different MAXNUM
MACRO(COMBINE_SOURCES BASE SRCS MAXNUM)
LIST(LENGTH SRCS SRCS_LENGTH)
SET(COMB_COUNTER 0)
FILE(GLOB EXISTING "${BASE}.*.cpp")
IF("$EXISTING")
FILE(REMOVE ${EXISTING})
ENDIF()
SET(OUT "${BASE}.${COMB_COUNTER}.cpp")
FILE(WRITE ${OUT})
SET(COUNTER 0)
FOREACH(SRC ${SRCS})
if(${SRC} MATCHES "^/.*$") # absolute filename
FILE(APPEND ${OUT} "#include<${SRC}>\n")
else()
FILE(APPEND ${OUT} "#include<${CMAKE_SOURCE_DIR}/${SRC}>\n")
endif()
MATH(EXPR COUNTER "${COUNTER}+1")
IF(${COUNTER} EQUAL ${MAXNUM})
SET(COUNTER 0)
MATH(EXPR COMB_COUNTER ${COMB_COUNTER}+1)
SET(OUT "${BASE}.${COMB_COUNTER}.cpp")
FILE(WRITE ${OUT})
ENDIF()
ENDFOREACH()
ENDMACRO()
|