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