CMakeMacroMerge: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
(Replace content with link to new CMake community wiki)
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[CMake_User_Contributed_Macros|Back]]
{{CMake/Template/Moved}}


'''NOTE:''' You can merge and sort lists using the SET() and LIST() command and no longer need this macro.
This page has moved [https://gitlab.kitware.com/cmake/community/wikis/contrib/macros/Merge here].
 
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)
----
 
{{CMake/Template/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)
 
[[CMake_User_Contributed_Macros|Back]]
 
{{CMake/Template/Footer}}
[[Category:CMakeMacro]]

Latest revision as of 15:41, 30 April 2018


The CMake community Wiki has moved to the Kitware GitLab Instance.

This page has moved here.