|
|
(4 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| [[CMake_User_Contributed_Macros|Back]]
| | {{CMake/Template/Moved}} |
|
| |
|
| {{CMake/Template/Obsolete}}
| | This page has moved [https://gitlab.kitware.com/cmake/community/wikis/contrib/macros/Merge here]. |
| | |
| '''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(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)
| |
|
| |
| ----
| |
| | |
| # 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]]
| |