用#
注释,表示到行尾均为注释。
包含别的文件,例如:include xx.pri
。类似于c++的#include
。。。
win32/macx/unix/linux-g++
等,分别对应于windows. mac. unix. linux等系统。
作用域和if
语句很像,如果某个条件为真,作用域中的设置就会被处理,例如:
debug{
TARGET = XXd
}
release{
TARGET = XX
}
上面代码的意思是:如果是debug版本,可执行程序的名字是xxd,否则就是xx。可以这样写:
debug:TARGET = xxd
release:TARGET = XX
作用域也可以嵌套使用,例如:
win32{
debug{
TARGET = xxwd
}
}
也可以这样写:
win32:debug{
TARGET = xxwd
}
还可以加上else语句:
debug{
TARGET = xxd
}else{
TARGET = xx
}
Qt+=
: 添加额外的模块支持,例如Qt -= QtCore; Qt += network,phonon,xml,thread
“=”操作符:
分配一个值给一个变量。例如:TARGET = myapp
,这将会删掉原来对TARGET的任何设置,并将变量TARGET的值设置为myapp。
“+=”操作符:
向一个变量的值的列表中添加一个值。例如:DEFINES += QT_DLL
,把QT_DLL添加到makefile的预处理定义的列表中。
“-=”操作符:
从变量的列表中移除一个值。例如:DEFINES -= QT_DLL
,把QT_DLL从Makefile的预处理定义列表中移除。
“*=”操作符:
仅仅在一个值不存在于一个变量的值的列表中的时候,把它添加进去。例如:DEFINES *= QT_DLL
,只用在QT_DLL没有被定义在预处理定义的列表中时,它才会被添加进去。
“~=”操作符:
将会替换任何与指定的值的正则表达式匹配的任何值。例如:DEFINES ~= s/QT_[DT].+/QT
,将会用QT来替代任何以QT_D或QT_T开头的变量中的QT_D或QT_T。
生成Makefile采用的模板。以下是可供选择的模板:
app模板:
app模板告诉qmake为建立一个应用程序生成一个Makefile。当使用这个模板时,下面这些qmake系统变量是被承认的。你应该在你的.pro文件中使用它们来为你的应用程序指定特定信息。
详细请参考Qt帮助条目:qmake Variable Reference。
lib模板:
lib模板告诉qmake为建立一个库而生成makefile。当使用这个模板时,除了“app”模板中提到系统变量,还有一个VERSION是被支持的。你需要在为库指定特定信息的.pro文件中使用它们。
subdirs模板:
subdirs模板告诉qmake生成一个makefile,它可以进入到特定子目录并为这个目录中的项目文件生成makefile并且为它调用make。这个模板只有一个系统变量SUBDIRS可以被识别。
配置变量,指定了编译器所要使用的选项和所需要链接的库。
控制编译器标志的选项:
控制需要连接的库的选项:
例如:CONFIG += qt debug
,使用qt库的应用程序,debug版本。
**注意事项:**必须使用“+=”,不要使用“=”,否则原来的设置会被清除。
MY_VARIABLE = value
定义了一个变量MY_VARIABLE,并将值设置为value。
MY_DEFINES = $$DEFINES
现在MY_DEFINES变量包含了项目文件在这点时DEFINES变量的值。这也和下面的语句一样:
MY_DEFINES = $${DEFINES}
这里列出的不全,最好还是看Qt的帮助主题:qmake Function Reference
contains( variablename, value )
: contains( CONFIG, thread ) {
DEFINES += QT_THREAD_SUPPORT
}
如果thread存在于CONFIG变量的值的列表中时,那么QT_THREAD_SUPPORT将会被加入到DEFINES变量的值的列表中。
count( variablename, number )
: count( DEFINES, 5 ) {
CONFIG += debug
}
dirname(file)
: FILE = /etc/X11R6/XF86Config
DIRNAME = $$dirname(FILE) #/etc/X11R6
error( string )
: error(An error has occurred in the configuration process.)
exists( filename )
: exists( /local/qt/qmake/main.cpp ) {
SOURCES += main.cpp
}
如果/local/qt/qmake/main.cpp
存在,那么main.cpp将会被添加到源文件列表中。
注意可以不用考虑平台使用“/”作为目录的分隔符。
find( variablename, substr )
: MY_VAR = one two three four
MY_VAR2 = $$join(MY_VAR, " -L", -L) -Lfive
MY_VAR3 = $$member(MY_VAR, 2) $$find(MY_VAR, t.*)
MY_VAR2将会包含-Lone -Ltwo -Lthree -Lfour -Lfive
,并且MYVAR3将会包含“three two three”。
include(filename)
:8.infile( filename, var, val )
:
如果filename文件(当它被qmake自己解析时)包含一个值为val的变量var,那么这个函数将会返回成功。你也可以不传递第三个参数(val),这时函数将只测试文件中是否分配有这样一个变量var。
isEmpty( variablename )
:count( variablename, 0 )
是一样的。如果叫做variablename的变量没有任何元素,函数返回成功否则失败。例如: isEmpty( CONFIG ) {
CONFIG += qt warn_on debug
}
join( variablename, glue, before, after )
:
这将会在variablename的各个值中间加入glue。如果这个变量的值为非空,那么就会在值的前面加一个前缀before和一个后缀after。只有variablename是必须的字段,其它默认情况下为空串。如果你需要在glue. before或者after中使用空格的话,你必须提供(引用?)它们。
member( variablename, position )
:
返回函数的值列表中指定位置的值。如果变量值列表并不存在指定的位置,这将会返回一个空串。variablename是唯一必须的字段,如果没有指定位置,则默认为列表中的第一个值(position默认为0)。
message( string )
:
这个函数只是简单地在控制台上输出消息。
message( "This is a message" )
文本“This is a message”被输出到控制台上并且对于项目文件的处理将会继续进行。
replace(string, old_string, new_string)
: MESSAGE = This is a tent.
message($$replace(MESSAGE, tent, test))
prints the message:
This is a test.
system( command )
: system( ls /bin ) {
SOURCES += bin/main.cpp
HEADERS += bin/main.h
}
所以如果命令ls /bin返回1,那么bin/main.cpp将被添加到源文件列表中并且bin/main.h将被添加到头文件列表中。
warning(string)
:修改自:https://blog.csdn.net/cqltbe131421/article/details/82491597