ctkMacroParseArguments.cmake 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!
  2. #! See http://www.cmake.org/Wiki/CMakeMacroParseArguments
  3. #!
  4. #! \ingroup CMakeUtilities
  5. MACRO(CtkMacroParseArguments 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. SET(current_arg_name DEFAULT_ARGS)
  14. SET(current_arg_list)
  15. FOREACH(arg ${ARGN})
  16. SET(larg_names ${arg_names})
  17. LIST(FIND larg_names "${arg}" is_arg_name)
  18. IF (is_arg_name GREATER -1)
  19. SET(${prefix}_${current_arg_name} ${current_arg_list})
  20. SET(current_arg_name ${arg})
  21. SET(current_arg_list)
  22. ELSE (is_arg_name GREATER -1)
  23. SET(loption_names ${option_names})
  24. LIST(FIND loption_names "${arg}" is_option)
  25. IF (is_option GREATER -1)
  26. SET(${prefix}_${arg} TRUE)
  27. ELSE (is_option GREATER -1)
  28. SET(current_arg_list ${current_arg_list} ${arg})
  29. ENDIF (is_option GREATER -1)
  30. ENDIF (is_arg_name GREATER -1)
  31. ENDFOREACH(arg)
  32. SET(${prefix}_${current_arg_name} ${current_arg_list})
  33. ENDMACRO()