Qmake

来源:互联网 发布:oracle数据库备份方法 编辑:程序博客网 时间:2024/05/16 14:47

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会在调用函数前备份变量数据,调用后恢复备份前的数据,并返回新数据

所以不会生效,如果要实现这样的操作,只能将代码写在直接配置语句中。

原创粉丝点击