Qmake recursion

3 篇文章 0 订阅

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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值