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]]
  
{{CMake/Template/Obsolete}}
+
'''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 01:45, 16 January 2009

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]