gpt4 book ai didi

c++ - 从 qmake 运行脚本以获取内部版本号

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:37 25 4
gpt4 key购买 nike

我正在尝试将构建编号添加到我的 Qt 项目中,方法是将该编号作为 DEFINE 包含在内。我找到了一些例子,但我似乎无法让它们发挥作用。基本上 build.sh 是从命令行调用的,反射(reflect)了当前的内部版本号。该数字应在 qmake 中设置为 #DEFINE,并包含在我的代码中

我在 .pro 文件中有以下代码

unix: {
BUILDNO = $$system(./build.sh)
DEFINES += BUILD_NUM=$${BUILDNO}
}
else:
DEFINES += BUILD_NUM=0

我的 build.sh 文件中的这段代码

#!/bin/bash    
n=25;#the variable that I want to be incremented
next_n=$[$n+1]
sed -i "/#the variable that I want to be incremented$/s/=.*#/=$next_n;#/" ${0}
echo $n

还有我的代码中的示例行:

a.setApplicationVersion(QString("%1.%2.%3").arg(VERSION_MAJ).arg(VERSION_MIN).arg(BUILD_NUM));

从命令行运行 build.sh 脚本工作得很好。它向命令行回显一个数字,并递增脚本中的数字。当我构建我的项目时,这个数字会增加,所以我知道它正在执行。但是当我打印 DEFINE 变量时,回显的数字没有显示在我的代码中。但是...在 Linux 上,它始终为 0

最佳答案

您的 .pro 语法不正确,因为“else”命令不应该使用“:”,而应该使用“{}”,所以前面的命令总是被覆盖。

unix: {
BUILDNO = $$system(sh $$(PWD)/build.sh)
DEFINES += BUILD_NUM=$${BUILDNO}
}
else {
DEFINES += BUILD_NUM=0
}

作为@Matt指出,如果命令在同一行,则可以使用“:”:

unix: {
BUILDNO = $$system(sh $$(PWD)/build.sh)
DEFINES += BUILD_NUM=$${BUILDNO}
}
else: DEFINES += BUILD_NUM=0

关于c++ - 从 qmake 运行脚本以获取内部版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57995545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com