10

我希望编译后的应用程序在编译期间具有提交号、源文件校验和和其他可用的东西。

在普通的 Makefile 中,我这样做:

prog: VERSION source.c
    gcc -DVERSION=\"$(shell cat VERSION)\" source.c -o prog 

VERSION: .git
    git describe > VERSION

如何使用与 qmake 类似的东西?

4

2 回答 2

19

如果您要将版本信息作为包含文件(比如说“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”需要先存在,然后才能完成其他任何操作(如果尚未制作,则强制制作它)。

于 2011-03-03T15:55:30.663 回答
0

一个更简单的解决方案,即使@jwernemy 是解决它的好方法:

VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)
于 2015-04-20T17:11:18.593 回答