35 lines
1.2 KiB
CMake
35 lines
1.2 KiB
CMake
cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
|
|
|
|
# prevent multiple inclusion
|
|
if (DEFINED LIST_TO_STRING_LOADED)
|
|
return()
|
|
endif ()
|
|
set(LIST_TO_STRING_LOADED ON)
|
|
|
|
function (list_to_string separator prefix suffix input_list output_string_var)
|
|
set(res "")
|
|
# get list length
|
|
list(LENGTH input_list list_length)
|
|
# if the list has 0 or 1 element, there is no need to loop over
|
|
if (list_length LESS 2)
|
|
set(res "${prefix}${input_list}${suffix}")
|
|
else ()
|
|
math(EXPR last_element_index "${list_length} - 1")
|
|
foreach (index RANGE ${last_element_index})
|
|
# get current item_value
|
|
list(GET input_list ${index} item_value)
|
|
if (NOT item_value STREQUAL "")
|
|
# .. and append non-empty value to output string
|
|
set(res "${res}${prefix}${item_value}${suffix}")
|
|
# append separator if current element is NOT the last one.
|
|
if (NOT index EQUAL last_element_index)
|
|
set(res "${res}${separator}")
|
|
endif ()
|
|
endif ()
|
|
endforeach ()
|
|
endif ()
|
|
set(${output_string_var}
|
|
"${res}"
|
|
PARENT_SCOPE)
|
|
endfunction ()
|