默认情况下,CMake输出没有分隔符的列表,例如
set(my_list a b c d)
message(${my_list})
Run Code Online (Sandbox Code Playgroud)
输出
abcd
Run Code Online (Sandbox Code Playgroud)
你怎么能(轻松地)使CMake输出像实际存储的那样?
a;b;c;d
Run Code Online (Sandbox Code Playgroud)
(典型的用例是输出搜索路径列表)
Zer*_*ero 38
将解除引用的变量括在引号中.
set(my_list a b c d)
message("${my_list}")
Run Code Online (Sandbox Code Playgroud)
输出
a;b;c;d
Run Code Online (Sandbox Code Playgroud)
您可以编写一个函数来连接列表的项目和分隔符,然后将其打印出来.例如,这样的功能:
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)
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样使用它:
set(my_list a b c d)
ListToString(str ", " ${my_list})
message(STATUS "${str}")
Run Code Online (Sandbox Code Playgroud)
哪个输出:
a, b, c, d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12689 次 |
| 最近记录: |