计算机系统应用教程网站

网站首页 > 技术文章 正文

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

btikc 2024-09-08 12:03:23 技术文章 22 ℃ 0 评论

用到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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表