1# From http://www.cmake.org/Wiki/CMakeMacroParseArguments
2
3cmake_minimum_required(VERSION 2.6)
4
5MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
6  SET(DEFAULT_ARGS)
7  FOREACH(arg_name ${arg_names})
8    SET(${prefix}_${arg_name})
9  ENDFOREACH(arg_name)
10  FOREACH(option ${option_names})
11    SET(${prefix}_${option} FALSE)
12  ENDFOREACH(option)
13
14  SET(current_arg_name DEFAULT_ARGS)
15  SET(current_arg_list)
16  FOREACH(arg ${ARGN})
17    SET(larg_names ${arg_names})
18    LIST(FIND larg_names "${arg}" is_arg_name)
19    IF (is_arg_name GREATER -1)
20      SET(${prefix}_${current_arg_name} ${current_arg_list})
21      SET(current_arg_name ${arg})
22      SET(current_arg_list)
23    ELSE (is_arg_name GREATER -1)
24      SET(loption_names ${option_names})
25      LIST(FIND loption_names "${arg}" is_option)
26      IF (is_option GREATER -1)
27       SET(${prefix}_${arg} TRUE)
28      ELSE (is_option GREATER -1)
29       SET(current_arg_list ${current_arg_list} ${arg})
30      ENDIF (is_option GREATER -1)
31    ENDIF (is_arg_name GREATER -1)
32  ENDFOREACH(arg)
33  SET(${prefix}_${current_arg_name} ${current_arg_list})
34ENDMACRO(PARSE_ARGUMENTS)
35