foreach-ZIP_LISTS-multiple-iter-vars-test.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. function(foreachTest result list_var_1 list_var_2 list_var_3)
  2. set(_options MUTE)
  3. set(_one_value_args)
  4. set(_multi_value_args)
  5. cmake_parse_arguments(PARSE_ARGV 3 _arg "${_options}" "${_one_value_args}" "${_multi_value_args}")
  6. set(_has_any_output FALSE)
  7. list(APPEND CMAKE_MESSAGE_INDENT "| ")
  8. foreach(first second third IN ZIP_LISTS ${list_var_1} ${list_var_2} ${list_var_3})
  9. if(NOT first)
  10. set(first "[undefiend]")
  11. endif()
  12. if(NOT second)
  13. set(second "[undefiend]")
  14. endif()
  15. if(NOT third)
  16. set(third "[undefiend]")
  17. endif()
  18. if(NOT _arg_MUTE)
  19. message(STATUS "${first}, ${second}, ${third}")
  20. endif()
  21. set(_has_any_output TRUE)
  22. endforeach()
  23. set(${result} ${_has_any_output} PARENT_SCOPE)
  24. endfunction()
  25. function(foreachTestDecorated list_var_1 list_var_2 list_var_3)
  26. list(APPEND CMAKE_MESSAGE_INDENT " ")
  27. message(STATUS "Begin output")
  28. foreachTest(_has_any_output ${list_var_1} ${list_var_2} ${list_var_3})
  29. if(NOT _has_any_output)
  30. message(STATUS "--> empty-output <--")
  31. endif()
  32. message(STATUS "End output")
  33. endfunction()
  34. list(APPEND english one two three)
  35. list(APPEND bahasa satu dua tiga)
  36. list(APPEND russian raz dva tri)
  37. message(STATUS "foreach(... IN ZIP_LISTS):")
  38. foreachTestDecorated(english bahasa russian)