文章如果有显示异常,绝对是的锅… 居然不能显示“$$”,所以只能用“$$”代替(或者是我没找到方法,希望看到的朋友能给个提示)… 1. pro/pri中加入带空格的路径:$$quote 例:INCLUDEPATH += $$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include)
2.pro/pri文件中定义函数,分为两种,一种是不带返回值的,另一种是返回BOOL类型的。 例: //The purpose is data processing, return result defineTest(func1){ variable = $$1 !build_pass:message(test_func $$variable) return (true) } //Returns a function of bool defineReplace(func1){ message($$1 $$1) #get the first arg message($$ARGS $$ARGS) #get all args for(v, 1){ !build_pass:message($$v) } //Print the value of args for(v, ARGS){ !build_pass:message($$v) } return ($$1) } //define two variables NAME = lance AGE = 24 func1($$NAME, $$AGE):!build_pass:message(success) ABC = $$func1($$NAME, $$AGE) !build_pass:message($$ABC)
输出: Project MESSAGE: test_func lance Project MESSAGE: success Project MESSAGE: $$1 lance Project MESSAGE: $$ARGS lance 24 Project MESSAGE: lance Project MESSAGE: lance Project MESSAGE: 24 Project MESSAGE: lance Project MESSAGE: $$1 lance Project MESSAGE: $$ARGS lance 24 PS: “!build_pass”的作用是防止message输出两次
3.qmake有一些内置的变量,例如: $$upper: 把变量值转为大写 例: LOWER_VAL = helloworld UPPER_VAL = $$upper($$LOWER_VAL) !build_pass:message($$UPPER_VAL) 输出:HELLOWORLD $$lower: 与upper相反,转为小写 $$PWD: 使用该变量的文件(.pro 或 .pri)所在目录,注意对比下一个 $$PRO_FILE_PWD: pro文件所在目录(注意:即使它用在pri文件内,也是指代的包含它的pro文件所在的目录) $$PRO_FILE: pro文件的全路径 $$OUT_PWD: 生成的makefile文件所在路径,和PRO_FILE_PWD对应 $$replace: 用新字符串替换变量中的原字符串 例: MESSAGE = This is a tent. !build_pass:message($$replace(MESSAGE, tent, test)) 输出: This is a test $$system_path:可以把路径换成当前系统下的路径形式,例如$$system_path(F:/xxx/xxx/xx)在win32下的结果就是”F:\xxx\xxx\xx”,这个方法在生成命令是特别有用。下面也会用到。 $$[QT_INSTALL_LIBS]:Qt安装目录中的lib目录,我的计算机上为:D:\Qt\Qt5.7.1_msvc2015\5.7\msvc2015\lib $$[QT_INSTALL_HEADERS]:Qt安装目录中的头文件所在目录,即include目录,我的计算机上为:D:\Qt\Qt5.7.1_msvc2015\5.7\msvc2015\include $$[QT_INSTALL_BINS]:Qt安装目录中的bin目录 $$[QT_INSTALL_QML]:Qt安装目录中的qml目录 $$[QT_INSTALL_LIBS]:Qt安装目录中的lib目录 $$[QT_INSTALL_PLUGINS]:Qt安装目录中的plugins目录 $$OUT_PWD:当前项目的生成目录,默认为影子构建目录,或者可以自己设定。 4.QMAKE_PRE_LINK 和 QMAKE_POST_LINK QMAKE_PRE_LINK选项可以设置编译后,链接前程序所做的操作,例如下面的实例在链接前拷贝Qt安装目录的一个pdb文件到生成目录下: QMAKE_PRE_LINK += copy $$system_path($$[QT_INSTALL_LIBS])\qwindows.vc.pdb $$system_path($$OUT_PWD)\release\ & QMAKE_PRE_LINK += copy $$system_path($$[QT_INSTALL_LIBS])\qdds.vc.pdb $$system_path($$OUT_PWD)\release\ & QMAKE_PRE_LINK += copy $$system_path($$[QT_INSTALL_LIBS])\qicns.vc.pdb $$system_path($$OUT_PWD)\release\ 这里需要注意的是,如果有多条命令,一定要用 “&”符号隔开。 而 QMAKE_POST_LINK 则是链接后,启动应用程序之前所做的操作,比如这个选项可以设置你在运行前拷贝一些需要的库到生成目录中。 可参考:http://doc.qt.io/qt-4.8/qmake-variable-reference.html#qmake-post-link
