qmake language

news/2024/7/7 20:16:26

qmake language 变量

qmake language $() $$() $$[] $${} 区别(属性property、变量variable、环境变量evironment variable)_丘上人的博客-CSDN博客

qmake language 内建关键字

qmake language variable true false test function host_build_丘上人的博客-CSDN博客

qmake language函数

qmake language 内置函数 自定义函数 defineTest(testfunctionname) defineReplace(repacefunctionname)_丘上人的博客-CSDN博客

全局变量作用范围

全局变量作用范围为从声明开始到整个工程解析结束,export(variable)出的全局变量variable作用范围从第一次调用函数开始。如下,第一次调用ttfun开始。

message($$tt1)
message($$tt2)
message($$tt3)
tt1=dae
defineTest(mytt){
    message($$tt1)
    message($$tt2)
    message($$tt3)
}
tt2=ge
mytt()
tt3=eee
message($$tt1)
message($$tt2)
message($$tt3)
#输出:
#Project MESSAGE: 
#Project MESSAGE: 
#Project MESSAGE: 
#Project MESSAGE: dae
#Project MESSAGE: ge
#Project MESSAGE: 
#Project MESSAGE: dae
#Project MESSAGE: ge
#Project MESSAGE: eee

defineTest(ttfun){
    myvar.aa.cc=12345
    myvar.aa.bb=$${LITERAL_HASH}define TT 12345  #$${LITERAL_HASH}表示qmake language中输出#号
    export(myvar.aa.bb)
}

message($$myvar.aa.bb)  #输出为空
ttfun()
message($$myvar.aa.cc)  #输出空,全局环境中没有名字为myvar.aa.cc的变量
message($$myvar.aa.bb)  #输出#define TT 12345,全局环境中有名字为myvar.aa.bb的变量且有值

词法

string

1、#

$${LITERAL_HASH}在qmake string中表示'#'字符 

message($${LITERAL_HASH}ifdef TESTCODE)  
#输出 
#Project MESSAGE:#ifdef TESTCODE  $${LITERAL_HASH}表示“#”字符

2、转义字符

qmake language对string中的字符转义是在词法分析阶段,转义字符包括: 

//qmake QMakeParse.read中词法分析对转义操作的代码部分
               else if (c == '\\') {
                    static const char symbols[] = "[]{}()$\\'\"";
                    ushort c2;
                    if (cur != end && !((c2 = *cur) & 0xff00) && strchr(symbols, c2)) {
                        c = c2;
                        cur++;
                    } else {
                        deprecationWarning(fL1S("Unescaped backslashes are deprecated"));
                    }
                }

词法分析阶段不会对(\n,\t,\r)转义。如果要对(\n,\t,\r)转移,也就是获取到('\n','\r','\t'),需要用escape_expand(string)这个replace函数进行操作。('\n':换行,移动到下行;'\r':回车换行,移动到下行行首,移动到行首;'\t':tab键)

message(\[ \] \{ \} \( \) \$ \\ \' \" aa\nbb\rcc\tdd)
message($$escape_expand(\[ \] \{ \} \( \) \$ \\ \' \" aa\nbb\rcc\tdd))  #字符串“\[ \] \{ \} \( \) \$ \\ \' \" aa\nbb\rcc\tdd”在词法分析阶段就被处理成:“[ ] { } ( ) $ \ ' " aa\nbb\rcc\tdd”。escape_expand再对\n \r \t 进行转移处理。

 输出:

另外在词法处理时还会兼顾行延续功能:

var = aaaa  \
bbbb
message($$var)  #输出Project MESSAGE: aaaa bbbb

转义字符在qmake language中不作为分隔符号,参看如下代码:

var=aaa bbb
message($$size(var))
var= aaa$$escape_expand(\n)bbb
message($$size(var))
var = aaa$$escape_expand(\t)bbb
message($$size(var))
var = aaa$$escape_expand(\r)bbb
message($$size(var))
#输出:
Project MESSAGE: 2
Project MESSAGE: 1
Project MESSAGE: 1
Project MESSAGE: 1


http://lihuaxi.xjx100.cn/news/51956.html

相关文章

JAVA计算机毕业设计毕业生就业信息管理系统Mybatis+系统+数据库+调试部署

JAVA计算机毕业设计毕业生就业信息管理系统Mybatis系统数据库调试部署 JAVA计算机毕业设计毕业生就业信息管理系统Mybatis系统数据库调试部署本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技…

python做题遇到的format用法

“{ }”.format()** print(“三角形的周长为&#xff1a;{:.1f}”.format(d)) print(‘{} * {} {:<2}’.format(i,j, ij), end " “) print(”{}{}{:<2}“.format (i, k, ik), end‘\t’) print("{0}{1}{2}”.format(i, j, i * j), end‘\t’) str.format(’…

数据规范化与数据离散化

文章目录一、数据规范化1、小数定标规范化2、最小—最大规范化3、零-均值规范化&#xff08;z-score规范化&#xff09;二、数据离散化一、数据规范化 数据规范化&#xff08;归一化&#xff09;处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲&#xff0c;数值…

Linux外壳程序编程 shell编程 引号详解

shell是命令语言、命令解释程序及程序设计语言的统称&#xff1b; shell是一个命令语言解释器&#xff0c;它拥有自己内建的shell命令&#xff1b; Shell&#xff08;Bash&#xff09;单引号、双引号和反引号用法详解; 尽量使用 $(命令) 的方式来引用命令的输出&#xff0c;…

10.1国庆作业(cortexA7核LED灯实验)

文章目录作业内容思路分析1. 分析RCC章节2. 分析GPIO章节代码部分gpio.hgpio.cmain.c作业内容 实现cortex-A7核LED灯的点亮与熄灭 思路分析 1. 分析RCC章节 设置GPIOE控制器使能&#xff1a;RCC_MP_AHB4ENSETR[4] 1 2. 分析GPIO章节 设置GPIO模式寄存器为输出模式&#…

一、信息收集大全

渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们搜集信息的互联网渠道主要有&#xff1a;论坛/公告板/新闻组/媒体文章/博客/社交网络/github/其他商业或非商业性的网站。此外&#xff0c;他们也可以借助各种搜索引擎中获取相关数据&#xff0c;如谷歌、雅虎…

Web前端:古诗排版网页案例设计

题目要求 参考代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"author" content"huyiwei"><meta name"generator" content"HBuilder X"></meta><title&g…

[HJ73 计算日期到天数转换]

描述 根据输入的日期&#xff0c;计算是这一年的第几天。 保证年份为4位数且日期合法。 进阶&#xff1a;时间复杂度&#xff1a;O(n) &#xff0c;空间复杂度&#xff1a;O(1) 输入描述&#xff1a; 输入一行&#xff0c;每行空格分割&#xff0c;分别是年&#xff0c;月…