qmake常用语法

一、注释

#

二、include()

包含别的文件

三、平台宏

win32

macx

unix

linux-g++

四、作用域

 作用域和“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

六、TEMPLATE变量

1、app:

2、lib:

3、subdirs:

4、vcapp:

5、vclib:

6、vcsubdirs:

七、常用变量:

   HEADERS:需要包含的头文件的列表。

  SOURCES:需要的源文件的列表。

  FORMS:需要的.ui文件的列表。

  LEXSOURCES:所有lex源文件的列表。

  YACCSOURCES:所有yacc源文件的列表。

  TARGET:可执行应用程序的名称。默认值为项目文件的名字。

  DESTDIR:放置可执行程序目标的目录。

  OBJECTS_DIR:放置obj中间文件的目录。

  MOC_DIR: moc转换文件路径。

  RCC_DIR: 资源文件路径。

  UI_DIR:ui文件转换的路径。

  RESOURCES:需要包含的资源文件。

  LIBS:依赖库的路径和名称 -L{xxdirxx} -l{xxnamexx}。

  LIBEXT: 产生lib的后缀。

  DEFINES:应用程序所需的额外的宏定义列表。

  INCLUDEPATH:应用程序所需的额外的包含路径列表。

  DEPENDPATH:应用程序所依赖的搜索路径。

  VPATH:寻找补充文件的搜索路径。

  DEF_FILE:只有Windows需要:应用程序所要连接的.def文件。

  RC_FILE:只有Windows需要:应用程序的资源文件。

  RES_FILE:只有Windows需要:应用程序所要连接的资源文件。

  TRANSLATIONS: 多国语言支持文件。

  INSTALLS: 要安装的文件。

  target.path: 安装的路径。

八、CONFIG变量:

  配置变量,指定了编译器所要使用的选项和所需要链接的库。

1、控制编译器标志的选项:

  release:应用程序将以release模式连编,如果“debug”被指定,它将被忽略。

  debug:应用程序将以debug模式连编。

build_all:

debug_and_release

  warn_on:编译器会输出尽可能多的警告信息,如果“warn_off”被指定,它将被忽略。

  warn_off:编译器会输出尽可能少的警告信息。

2、控制需要连接的库的选项:

  qt:应用程序是一个Qt应用程序,并且Qt库将会被链接。

  thread:应用程序是一个多线程程序。

  x11:应用程序是一个x11应用程序或者库。

  windows:只用于app模板,应用程序是一个windows下的窗口应用程序。

  console:只用于app模板,应用程序是一个windows下的控制台应用程序。

  dll:只用于lib模板,库是一个共享库。

  staticlib:只用于lib模板,库是一个静态库。

  plugin:只用于lib模板,库是一个插件,这将会使dll选项生效。

  例如:CONFIG += qt debug,使用qt库的应用程序,debug版本。

九、for语句

EXTRAS = handlers texts docs

for(dir,EXTRAS){

exists($$dir){

SUBDIRS += $$dir;

}

}

十、函数

关键字:常用函数

这里列出的不全,最好还是看Qt的帮助主题:qmake Function Reference

1、contains( variablename, value ):
  如果value存在于一个被叫做variablename的变量的值的列表中,那么成功,否则失败。例如:

  contains( CONFIG, thread ) {
    DEFINES += QT_THREAD_SUPPORT
  }

  如果thread存在于CONFIG变量的值的列表中时,那么QT_THREAD_SUPPORT将会被加入到DEFINES变量的值的列表中。

2、count( variablename, number ):
  如果number与一个被叫做variablename的变量的值的数量一致,那么成功,否则失败。例如:

  count( DEFINES, 5 ) {
    CONFIG += debug
  }

3、dirname(file):

  返回指定文件的目录名称。例如:

   FILE = /etc/X11R6/XF86Config

   DIRNAME = $$dirname(FILE) #/etc/X11R6

4、error( string ):

  这个函数输出所给定的字符串,然后会使qmake退出。例如:

  error(An error has occurred in the configuration process.)

5、exists( filename ):

  如果指定文件存在,那么函数成功,否则失败。例如:

  exists( /local/qt/qmake/main.cpp ) {
    SOURCES += main.cpp
  }

  如果/local/qt/qmake/main.cpp存在,那么main.cpp将会被添加到源文件列表中。

  注意可以不用考虑平台使用“/”作为目录的分隔符。

6、find( variablename, substr ):

  这将会放置variablename中所有匹配substr的值。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”。

7、include(filename):

  包含文件。

8、infile( filename, var, val ):

  如果filename文件(当它被qmake自己解析时)包含一个值为val的变量var,那么这个函数将会返回成功。你也可以不传递第三个参数(val),这时函数将只测试文件中是否分配有这样一个变量var。

9、isEmpty( variablename ):

  这和使用count( variablename, 0 )是一样的。如果叫做variablename的变量没有任何元素,函数返回成功否则失败。例如:

  isEmpty( CONFIG ) {
    CONFIG += qt warn_on debug
  }

10、join( variablename, glue, before, after ):

  这将会在variablename的各个值中间加入glue。如果这个变量的值为非空,那么就会在值的前面加一个前缀before和一个后缀after。只有variablename是必须的字段,其它默认情况下为空串。如果你需要在glue、before或者after中使用空格的话,你必须提供(引用?)它们。

11、member( variablename, position ):

  返回函数的值列表中指定位置的值。如果变量值列表并不存在指定的位置,这将会返回一个空串。variablename是唯一必须的字段,如果没有指定位置,则默认为列表中的第一个值(position默认为0)。

12、message( string ):

  这个函数只是简单地在控制台上输出消息。

      message( "This is a message" )

  文本“This is a message”被输出到控制台上并且对于项目文件的处理将会继续进行。

13、replace(string, old_string, new_string):

  用讲string中的old_string用new_string代替,例如:

  MESSAGE = This is a tent.

  message($$replace(MESSAGE, tent, test))

  prints the message:

  This is a test.

14、system( command ):

  特定指令被执行并且如果它返回一个1的退出值,那么函数成功否则失败。例如:

  system( ls /bin ) {
    SOURCES += bin/main.cpp
    HEADERS += bin/main.h
  }

  所以如果命令ls /bin返回1,那么bin/main.cpp将被添加到源文件列表中并且bin/main.h将被添加到头文件列表中。

15、warning(string):

  这个函数一直返回成功,并且会输出指定字符串给用户,跟message是同义词。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值