CMakeMacroFilterOut: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
(Replace content with link to new CMake community wiki)
 
(2 intermediate revisions by one other user 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/FilterOut here].
 
'''NOTE: This macro is ''obsolete'' by built-in support in CMake for removing list elements with the LIST command:'''
 
list(REMOVE_ITEM <list> <value> [<value> ...])
 
SET(MYLIST this that and the other)
# remove "this" and "that"
LIST(REMOVE_ITEM MYLIST this)
LIST(REMOVE_ITEM MYLIST that)
 
-----
    MACRO(FILTER_OUT FILTERS INPUTS OUTPUT)
        # Mimicks Gnu Make's $(filter-out) which removes elements
        # from a list that match the pattern.
        # Arguments:
        #  FILTERS - list of patterns that need to be removed
        #  INPUTS  - list of inputs that will be worked on
        #  OUTPUT  - the filtered list to be returned
        #
        # Example:
        #  SET(MYLIST this that and the other)
        #  SET(FILTS this that)
        #
        #  FILTER_OUT("${FILTS}" "${MYLIST}" OUT)
        #  MESSAGE("OUTPUT = ${OUT}")
        #
        # The output -
        #  OUTPUT = and;the;other
        #
        SET(FOUT "")
        FOREACH(INP ${INPUTS})
            SET(FILTERED 0)
            FOREACH(FILT ${FILTERS})
                IF(${FILTERED} EQUAL 0)
                    IF("${FILT}" STREQUAL "${INP}")
                        SET(FILTERED 1)
                    ENDIF("${FILT}" STREQUAL "${INP}")
                ENDIF(${FILTERED} EQUAL 0)
            ENDFOREACH(FILT ${FILTERS})
            IF(${FILTERED} EQUAL 0)
                SET(FOUT ${FOUT} ${INP})
            ENDIF(${FILTERED} EQUAL 0)
        ENDFOREACH(INP ${INPUTS})
        SET(${OUTPUT} ${FOUT})
    ENDMACRO(FILTER_OUT FILTERS INPUTS OUTPUT)
 
-----
[[CMake_User_Contributed_Macros|Back]]
 
{{CMake/Template/Footer}}

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.