2013-07-16 36 views
14

默認列表,CMake的輸出無定界符列表,如CMake的:輸出帶分隔符

set(my_list a b c d) 
message(${my_list}) 

輸出

abcd 

你怎麼能(輕鬆)使CMake的輸出像什麼實際存儲?

a;b;c;d 

(A典型的使用情況是用於輸出的搜索路徑的列表)

回答

19

括在引號中的解除引用的變量。

set(my_list a b c d) 
message("${my_list}") 

輸出

a;b;c;d 
+1

感謝。輸出到文件時也是如此。我希望事情在文檔中得到更好的解釋... – Antonio

4

你可以寫一個函數用分隔符的加入列表的物品放在一起,然後打印出該代替。例如,這樣的功能:

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 
+0

你有沒有參數名稱倒退? –