如何配置Qt .pro文件在部署安装时生成含VERSION参数的版本文件
方案1:直接通过.pro配置生成并安装版本文件(优先推荐)
不需要额外脚本,全靠qmake逻辑实现:
- 在你的.pro文件末尾添加以下配置即可:
# 1. 定义版本文件信息,若需要文件名带版本号可改为 $$OUT_PWD/version_$$VERSION.txt VERSION_FILE = $$OUT_PWD/version.txt # 2. 生成版本文件,写入VERSION值;若只需空文件可将commands改为 @touch $$VERSION_FILE version_file.target = $$VERSION_FILE version_file.commands = @echo $$VERSION > $$VERSION_FILE version_file.CONFIG += phony no_link QMAKE_EXTRA_TARGETS += version_file PRE_TARGETDEPS += $$VERSION_FILE # 3. 定义安装规则,指定版本文件安装到系统的路径(可自行修改) version_file_install.files = $$VERSION_FILE version_file_install.path = /etc/myapp/ INSTALLS += version_file_install
- 效果:编译构建时会自动生成包含VERSION值的版本文件,opkg安装时会自动部署到你指定的
/etc/myapp/version.txt路径,其他程序直接读取该文件内容即可拿到版本号。
方案2:通过postInst脚本实现
如果更偏好使用安装后脚本,按以下步骤操作:
- 新建postinst模板文件
postinst.in,放到项目根目录,内容如下:
#!/bin/sh # 自动替换@VERSION@占位符为.pro中的VERSION值 echo "@VERSION@" > /etc/myapp/version.txt # 可在此添加其他postInst需要执行的逻辑 exit 0
- 在.pro文件末尾添加以下配置,实现占位符替换和postinst脚本挂载:
# 替换postinst模板中的占位符 POSTINST_TPL = $$PWD/postinst.in POSTINST_OUT = $$OUT_PWD/postinst QMAKE_SUBSTITUTES += POSTINST_TPL # 指定ipk包的postinst脚本路径(不同ipk构建工具配置略有差异,通用场景均可识别) package.postinst = $$POSTINST_OUT
- 效果:构建ipk包时会自动将
@VERSION@替换为.pro中定义的VERSION值,opkg安装完成后自动执行脚本生成版本文件。
内容的提问来源于stack exchange,提问作者komodosp
相关产品推荐
相关产品推荐

