Ответ 1
Включите переменную разыменования в кавычках.
set(my_list a b c d)
message("${my_list}")
Выходы
a;b;c;d
По умолчанию выходы CMake выходят без разделителей, например
set(my_list a b c d)
message(${my_list})
Выходы
abcd
Как вы можете (легко) сделать вывод CMake похожим на то, что на самом деле хранится?
a;b;c;d
(Типичный пример использования - для вывода списка путей поиска)
Включите переменную разыменования в кавычках.
set(my_list a b c d)
message("${my_list}")
Выходы
a;b;c;d
Вы можете написать функцию, чтобы присоединиться к элементам списка вместе с разделителем, а затем распечатать это. Например, такая функция:
function (ListToString result delim)
list(GET ARGV 2 temp)
math(EXPR N "${ARGC}-1")
foreach(IDX RANGE 3 ${N})
list(GET ARGV ${IDX} STR)
set(temp "${temp}${delim}${STR}")
endforeach()
set(${result} "${temp}" PARENT_SCOPE)
endfunction(ListToString)
Затем вы можете использовать его так:
set(my_list a b c d)
ListToString(str ", " ${my_list})
message(STATUS "${str}")
Какие выходы:
a, b, c, d