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