CTKParseArgumentsMacro.cmake 1.1 KB

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