2012-07-25 85 views
1

我使用cmake 2.8.8。 我想使功能得到源文件的列表檢查,如果它們存在,並比我必須在我CMakeList.txt.Here使用另一個變量存在的文件是我的功能如何定義我自己的cmake函數

function(SetSources SourceList Sourceses) 

message(STATUS "Sourcelist " ${SourceList}) 

foreach(SRC ${SourceList}) 

FILE(GLOB Sourceses ${SRC}) 

message(STATUS "Sources " ${Sourceses}) 

endforeach(SRC) 

endfunction(SetSources) 

這就是我所說的我的功能和我推哪個參數到它

set(SourceList plugincustomresourcemgr.cpp PluginCustomResourceDLL.cppextendedarchive.cpp) 

set(Sourceses) 

SetSources(SourceList Sourceses) 

輸出形式

message(STATUS "Sourcelist " ${SourceList}) 

--SourceList SourceList 

這不是合格價值。什麼我做錯了,我怎麼必須處理函數的參數

回答

1

我發現在cmake的該功能是固定數量的參數(如C/C++) 當我定義的變量我必須通過他的價值與$ {}來函數。如果變量具有多於一個值並且函數只獲取一個參數,則函數將獲得最後一個值。如果我不通過引用傳遞變量($ {}),函數將獲得類似於變量值的名稱。

爲了解決我的問題,我定義宏,如果變量「SOURCELIST」和「源」在當前CMakeList.txt 我知道定義沒有得到論據

macro(checkSources) 

foreach(SRC ${SourceList}) 

file(GLOB Sources ${SRC}) 

endforeach(SRC) 

endmacro(checkSources) 

這做工精細,是更多的好主意檢查源與

file(GLOB Sources ${SourceList}) 

但這是我測試cmake的例子。

相關問題