Qmake recursion

来源:互联网 发布:郑州景安网络怎么样 编辑:程序博客网 时间:2024/06/06 14:03

Qmake递归

Qmake的对象可支持任意深度,Qmake的函数调用可以支持递归(不能超过深度100次调用)

超过一百次认为是死循环会报错

a.lib = alib_1 alib_2

SINGLE_MODULE = b c d e f g h i j
for(i, SINGLE_MODULE){
#变量符合一个”.”的字符串,请使用$$quote
eval($${i}$$quote(.lib) = $${i}lib_1 $${i}lib_2)
}

message(==> module $${i}$$quote(:))
for(i, SINGLE_MODULE){
libname = $${i}$$quote(.lib)
message($$libname = $$eval($$libname));
}

模块测试

M1 = a b
M2 = M1 c
M3 = M1 M2 d
M4 = M3 e f
M5 = j e a
M6 = M4 M5

/*!
参数是list类型的variablename
*/
defineReplace(getLibDependence){
list = $$eval($$1)
libs =
for(i, list){
libvalue = $$eval($${i}.lib)
//如果libvalue是空,说明不是最终结果
isEmpty(libvalue){
libs += $$getLibDependence($${i})
} else {
libs += $$libvalue
}
}

libs = $$unique(libs)
return ( $$libs )
}

message(M6 depdences: $$getLibDependence(M6))
message(M5 depdences: $$getLibDependence(M5))
message(M4 depdences: $$getLibDependence(M4))
message(M3 depdences: $$getLibDependence(M3))
message(M2 depdences: $$getLibDependence(M2))
message(M1 depdences: $$getLibDependence(M1))

原创粉丝点击