为Qml提供部分简单的预处理命令。
0x00 初衷
在不改变和影响原有语法的前提下提高qml开发效率。有一些qml项目兼顾与Qt4与Qt5版本,由于QML不用编译,但解释在运行时,使预处理指令不能用于直接通过QML。一般采用的方法是直接改文件内容,也就仅限于部分的修改。如:
Qt4版本下:1
import QtQuick 1.0
在Qt5版本下要修改成:1
import QtQuick 2.0
如果能像C/C++一样有预处理宏就不用那么麻烦了。本工具就是为了解决这一烦恼。
0x01 简单原理
- 使用python语言实现
- 和C/C++的
#ifdef
宏使用基本一样,但需要在其前添加//
如: - 然后执行脚本将会对预处理语句进行分析,对于符合条件的将会去除
//
,否则将会添加//
。1
2
3//#ifdef Qt4
...
//#endif
等价于C/C++宏:1
2
3
...
0x02 使用
命令行运行run.py(文末源码地址)
1
python run.py {qml文件名} {宏定义(可多个)}
例如:
执行前python run.py Test.qml Qt5
1
2
3
4
5//#ifdef Qt4
import QtQuick 1.0
//#else
import QtQuick 2.0
//#endif
执行后1
2
3
4
5//#ifdef Qt4
//import QtQuick 1.0
//#else
import QtQuick 2.0
//#endif
0x03 源码
1 | https://github.com/aeagean/QmlPreprocessing |
0x04 测试代码
1 | //#ifdef Qt4 |