2012-07-25 84 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的例子。

相关问题