# Difference between revisions of "CMakeMacroMerge"

From KitwarePublic

Jump to navigationJump to search
Line 1: | Line 1: | ||

[[CMake_User_Contributed_Macros|Back]] | [[CMake_User_Contributed_Macros|Back]] | ||

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

'''NOTE:''' You can merge and sort lists using the SET() and LIST() command | |||

set(FIRST_LIST a b c d i j k l) | set(FIRST_LIST a b c d i j k l) | ||

Line 13: | Line 11: | ||

---- | ---- | ||

{{CMake/Template/Obsolete}} | |||

# This macro merges elements in sorted lists ALIST and BLIST and stored the result in OUTPUT | # This macro merges elements in sorted lists ALIST and BLIST and stored the result in OUTPUT |

## Revision as of 06:45, 16 January 2009

**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**

# 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)