我希望编译后的应用程序在编译期间具有提交号、源文件校验和和其他可用的东西。
在普通的 Makefile 中,我这样做:
prog: VERSION source.c
gcc -DVERSION=\"$(shell cat VERSION)\" source.c -o prog
VERSION: .git
git describe > VERSION
如何使用与 qmake 类似的东西?
我希望编译后的应用程序在编译期间具有提交号、源文件校验和和其他可用的东西。
在普通的 Makefile 中,我这样做:
prog: VERSION source.c
gcc -DVERSION=\"$(shell cat VERSION)\" source.c -o prog
VERSION: .git
git describe > VERSION
如何使用与 qmake 类似的东西?
如果您要将版本信息作为包含文件(比如说“version.h”)而不是#define 传递,那么您可以将以下内容添加到您的 qmake 文件中
# Define how to create version.h
version.target = version.h
version.commands = <PUT_YOUR_COMMANDS_HERE>
version.depends = .git
QMAKE_EXTRA_TARGETS += version
PRE_TARGETDEPS += version.h
前 3 行说明如何创建一个名为“version”的新目标对象,该对象会生成“version.h”。它是通过执行命令“<PUT_YOUR_COMMANDS_HERE>”来完成的。目标取决于“.git”
“QMAKE_EXTRA_TARGETS”表示有一个称为“版本”的新目标。
“PRE_TARGETDEPS”表示“version.h”需要先存在,然后才能完成其他任何操作(如果尚未制作,则强制制作它)。
一个更简单的解决方案,即使@jwernemy 是解决它的好方法:
VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)