CMakeMacroFilterOut: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
     MACRO(FILTER_OUT FILTERS INPUTS OUTPUT)
     MACRO(FILTER_OUT FILTERS INPUTS OUTPUT)
 
    #
     # Mimicks Gnu Make's $(filter-out) which removes elements  
     # Mimicks Gnu Make's $(filter-out) which removes elements  
     # from a list that match the pattern.
     # from a list that match the pattern.
Line 18: Line 18:
     #  OUTPUT = and;the;other
     #  OUTPUT = and;the;other
     #
     #
     SET(FOUT "")
     SET(FOUT "")
     FOREACH(INP ${INPUTS})
     FOREACH(INP ${INPUTS})
Line 35: Line 34:
     ENDFOREACH(INP ${INPUTS})
     ENDFOREACH(INP ${INPUTS})
     SET(${OUTPUT} ${FOUT})
     SET(${OUTPUT} ${FOUT})
     ENDMACRO(FILTER_OUT FILTERS INPUTS OUTPUT)
     ENDMACRO(FILTER_OUT FILTERS INPUTS OUTPUT)

Revision as of 02:57, 15 September 2005

   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)