You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.0 KiB
69 lines
2.0 KiB
4 years ago
|
function(foreachTest result list_var_1 list_var_2 list_var_3)
|
||
|
set(_options MUTE)
|
||
|
set(_one_value_args)
|
||
|
set(_multi_value_args)
|
||
|
cmake_parse_arguments(PARSE_ARGV 3 _arg "${_options}" "${_one_value_args}" "${_multi_value_args}")
|
||
|
|
||
|
set(_has_any_output FALSE)
|
||
|
list(APPEND CMAKE_MESSAGE_INDENT "| ")
|
||
|
foreach(num IN ZIP_LISTS ${list_var_1} ${list_var_2} ${list_var_3})
|
||
|
foreach(i RANGE 2)
|
||
|
if(NOT num_${i})
|
||
|
set(num_${i} "[undefiend]")
|
||
|
endif()
|
||
|
endforeach()
|
||
|
if(NOT _arg_MUTE)
|
||
|
message(STATUS "${num_0}, ${num_1}, ${num_2}")
|
||
|
endif()
|
||
|
set(_has_any_output TRUE)
|
||
|
endforeach()
|
||
|
set(${result} ${_has_any_output} PARENT_SCOPE)
|
||
|
endfunction()
|
||
|
|
||
|
function(foreachTestDecorated list_var_1 list_var_2 list_var_3)
|
||
|
list(APPEND CMAKE_MESSAGE_INDENT " ")
|
||
|
message(STATUS "Begin output")
|
||
|
foreachTest(_has_any_output ${list_var_1} ${list_var_2} ${list_var_3})
|
||
|
if(NOT _has_any_output)
|
||
|
message(STATUS "--> empty-output <--")
|
||
|
endif()
|
||
|
message(STATUS "End output")
|
||
|
endfunction()
|
||
|
|
||
|
message(STATUS "foreach(IN ZIP_LISTS):")
|
||
|
list(APPEND CMAKE_MESSAGE_INDENT " ")
|
||
|
|
||
|
set(english)
|
||
|
set(bahasa)
|
||
|
set(russian)
|
||
|
|
||
|
message(STATUS "<<< empty lists case >>>")
|
||
|
foreachTestDecorated(english bahasa russian)
|
||
|
|
||
|
list(APPEND english one two three)
|
||
|
list(APPEND bahasa satu dua tiga)
|
||
|
list(APPEND russian raz dva tri)
|
||
|
|
||
|
message(STATUS "<<< same lengths lists case >>>")
|
||
|
foreachTestDecorated(english bahasa russian)
|
||
|
|
||
|
list(APPEND bahasa empat)
|
||
|
|
||
|
message(STATUS "<<< different lengths lists case >>>")
|
||
|
foreachTestDecorated(english bahasa russian)
|
||
|
|
||
|
set(num_0 "old-0")
|
||
|
set(num_1 "old-1")
|
||
|
set(num_2 "old-2")
|
||
|
foreachTest(_ english bahasa russian MUTE)
|
||
|
set(check PASSED)
|
||
|
foreach(i RANGE 2)
|
||
|
if(NOT "${num_${i}}" STREQUAL "old-${i}")
|
||
|
message(SEND_ERROR "num_${i} value is corrupted")
|
||
|
set(check FAILED)
|
||
|
endif()
|
||
|
endforeach()
|
||
|
message(STATUS "<<< test variable value restored -- ${check} >>>")
|
||
|
|
||
|
list(POP_BACK CMAKE_MESSAGE_INDENT)
|