CMakeMacroFilterOut: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
(Remove leading space rectangles from preformatted blocks)
(Replace content with link to new CMake community wiki)
 
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:'''
 
<pre>
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)
</pre>
 
-----
<pre>
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)
</pre>
 
-----
[[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.