CMakeMacroMerge

From KitwarePublic
Revision as of 06:45, 16 January 2009 by Plowman (talk | contribs)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Back

NOTE: You can merge and sort lists using the SET() and LIST() command and no longer need this macro.

set(FIRST_LIST  a b c d i j k l)
set(SECOND_LIST e f g h m n o p)
set(COMPLETE_LIST ${FIRST_LIST} ${SECOND_LIST})
list(SORT COMPLETE_LIST)
# you can also remove duplicates
list(REMOVE_DUPLICATES COMPLETE_LIST)


CAUTION: The contents of this page may be obsolete
120px-Old finnish stop sign.svg.png

   # This macro merges elements in sorted lists ALIST and BLIST and stored the result in OUTPUT
   MACRO(MERGE ALIST BLIST OUTPUT)
   SET(BTEMP ${BLIST})
   FOREACH(A ${ALIST})
       SET(SORTED)
       SET(UNINSERTED 1)
       FOREACH(B ${BTEMP})
           IF(${UNINSERTED})
               IF(${A} STRLESS ${B})
                   SET(SORTED ${SORTED} ${A})
                   SET(UNINSERTED 0)
               ENDIF(${A} STRLESS ${B})
           ENDIF(${UNINSERTED})
           SET(SORTED ${SORTED} ${B})
       ENDFOREACH(B ${BLIST})
       IF(${UNINSERTED})
           SET(SORTED ${SORTED} ${A})
       ENDIF(${UNINSERTED})
       SET(BTEMP ${SORTED})
   ENDFOREACH(A ${ALIST})
   SET(${OUTPUT} ${BTEMP})
   ENDMACRO(MERGE ALIST BLIST OUTPUT)
   
   # Here is an example that merges *.cpp files and *.h files into a single sorted list
   # This would be easier if FILE(GLOB...) properly matches "*.{cpp,h}"
   FILE(GLOB ALGEBRAIC_SRCS Implicit/Algebraic/*.cpp)
   FILE(GLOB ALGEBRAIC_H Implicit/Algebraic/*.h)
   MERGE("${ALGEBRAIC_H}" "${ALGEBRAIC_SRCS}" ALGEBRAIC_SRCS)

Back



CMake: [Welcome | Site Map]