Qmake的用法
1.变量的使用
Qmake提供了很多的内置变量,主要包含了项目构建相关的变量
以及Qt自身相关变量,详细可以参见qmake Variable Reference,Qt也提供供了
一些内置工具变量,这些变量可以在qmake生成的Makefile中看到,例如拷贝和
删除命令 QMAKE_COPY QMAKE_DEL等。
Qmake也提供了一些Qt自身环境的变量,这些变量可以通过qmake -query看到
2.函数的使用
2.1 Replace函数
Qt提供了很多的内置replace函数,详细可以通过qmake function查看,
例如replace,join,split,member,fist,last等。当然也可以自定制函数
自定制函数的变量通过$$1, $$2… $$N来进行访问,所有的参数存储在
一个List中”ARGS”就是所有参数 ARGS = $$1 $$2 ….
获取变量名参数的值,这里特别要注意的是,qmake传递的始终是字符串
所以可以传递变量名称或者直接值,具体传的是变量的名称还是变量的
值,可以通过函数说明知道,如果传递的是变量的值,直接通过$$N就可以
直接取得,如果传递的变量,则需要通过执行函数来获取
realvalue = $$eval($$N)。
defineReplace(myfunc){ qmake的函数”{}”括号必须和条件在一行
return (aa, bb, cc)
}
调用过程 LIST1 = $$myfunc() 特别注意这里必须要有返回值,否则报警告
2.2 Test函数
test函数和replace函数的参数使用,以及调用规则相同,唯一不同的是
test函数在调用的过程中不需要加”$$”符号,但是replace函数需要,而且
replace函数还需要一个变量来接收返回值,test主要用来判断,返回值只有
true和false,true是真,false是假
defineTest(equal0){
isEuqal($$1, 0){
return (true)
}
return (false)
}
for函数用法
for函数使用过程的注意点:
<1>传入的是变量名称
<2>访问循环变量调用 $${i}
例如:
for(i, LIST){
message(i=$${i})
}
对象列表的用法
例如
aa.filename = test1.data
aa.name = aa
bb.filename = test2.data
bb.name = bb
LISTA = aa bb
for(i, LISTA){
filename = $$eval($${i}.filename)
name = $$eval($${i}.name)
message(filename = $$filename name = $$name)
}
LIST = xx yy zz
for(i, LIST){
message(i = $${i})
}
aa.filename = test1.data
aa.name = aa
bb.filename = test2.data
bb.name = bb
LISTA = aa bb
for(i, LISTA){
filename = $$eval($${i}.filename)
name = $$eval($${i}.name)
message(filename = $$filename name = $$name)
}
Qmake的转义字符,以及”“字符
Qmake的pro文件中”“都用来表示注释,要输出”“,需要使用LITERAL_HASH来表示”“
Qmake中如果在字符串中输出”” 需要使用\来进行转义
另外需要注意的是,Qmake的replace函数,使用的是正则表达式,在进行替换的时候 * + ?等都是需要进行转义的
varname = “a*b = 5”
例如 newstr = $$replace(varname, $$quote(“*”), “+”)
另外需要注意的事情是,如果需要修改Qmake内置变量的值
*请一定不要在函数中进行修改,函数可以访问,但是绝对不能进行修改
*因为修改Qmake内置变量的值是不会生效的。
*例如你需要配置某个库的INCLUDEPATH,LIB等,你如果编写函数进行修改
*修改不会生效。需要在执行语句中完成。
defineReplace(configlib){
INCLUDEPATH += $$1
LIBS += -L$$2
}
直接调用$$configlib(/usr/lib/include, /usr/lib)
这样不会生效,Qmake会在调用函数前备份变量数据,调用后恢复备份前的数据,并返回新数据
所以不会生效,如果要实现这样的操作,只能将代码写在直接配置语句中。
今天的文章Qmake分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4865.html