Qt Pro文件 递归搜寻添加所有代码文件 并添加库路径

用到pro语法解释:

message()
功能:常用的pro打印,类似printf,Qt5中可以使用(Qt4不知道为什么不能用,可以在Qt5上调试好后放到Qt4上)
示例:
    message("My Source Files have $$SOURCES")
    将会打印出 My Source Files have ./src/main.cpp ./src/func.cpp
提示:有什么奇奇怪怪的想法可以用message来进行打印出来验证

$$files(1, 2)
功能:递归搜索文件
参数:
    1:搜寻的文件模板路径有.cpp文件
    2:是否递归搜索,true - 是, false - 否
示例:
    Sample = ./src/*.cpp
    $$files(Sample, true)
    返回
    ./src/main.cpp
    ./src/func.cpp


$$join(1, 2, 3, 4)
功能:变量拼接内容
参数:
    1:变量
    2:“胶水”,在多变量之间拼接上去的词
    3:头部拼接
    4:尾部拼接
示例1:
    Sample = LibName
    $$join(Sample, , , .so)
    返回 LibName.so
示例2:
    Sample = Dxf
    $$join(Sample, , -l, )
    返回 -lDxf

$$section(1, 2, 3, 4)
功能:字符串节选
参数:  
    1:字符串
    2:分割号
    3:开始段
    4:结束段
示例:
    Sample = LibSample.so
    $$section(Sample, ., 0, 0)
    返回 LibSample

$$dirname
功能:返回文件的路径,不带文件名的

$$basename
功能:返回文件名,不带路径的

$$unique
功能:去掉重复的变量

LibPath = ../libs

#外部头文件,相对路径,一般指库的头文件
ExternalHeader = \
    $$files("../includes/*.h", true) \
    $$files("../lib/*.h", true)

#搜寻该路径底下的文件
SourceDir = ./Src

#递归搜寻所有.cpp .h .ui文件
for(var, SourceDir) {
    SOURCES += $$files($$join(var, , , /*.cpp), true)
    HEADERS += $$files($$join(var, , , /*.h)  , true)
    FORMS   += $$files($$join(var, , , /*.ui) , true)
}

#搜寻所有头文件所在的路径
INCLUDEPATH = \
    $$dirname(HEADERS) \
    $$dirname(ExternalHeader)

INCLUDEPATH = $$unique(INCLUDEPATH)

#根据Path当层寻找.so和.a文件,返回相对路径
LibSo = $$files($$join(LibPath, , , /*.so), false)
LibA  = $$files($$join(LibPath, , , /*.a) , false)

#去路径
LibSo = $$basename(LibSo)
LibA  = $$basename(LibA)

#去后缀
LibSo = $$section(LibSo, ., 0, 0)
LibA  = $$section(LibA, ., 0, 0)

#库名整合
LibName = \
    $$LibSo \
    $$LibA

#lib头替换-l
LibName = $$replace(LibName, lib, -l)

#添加库
LIBS += $$LibName

#为了Qt4的运行环境库路径自动设置,一定要手动写全路径,不能使用变量
LIBS += -L../libs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liwension

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值