我希望编译的应用程序具有提交编号,源文件校验和以及在编译期间可用的其他内容。
在简单的Makefile中,我喜欢这样:
prog: VERSION source.c
gcc -DVERSION=\"$(shell cat VERSION)\" source.c -o prog
VERSION: .git
git describe > VERSION
如何使用与qmake类似的东西?
答案 0 :(得分: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”。它是通过执行命令“&lt; PUT_YOUR_COMMANDS_HERE&gt;”来完成的。目标取决于“.git”
“QMAKE_EXTRA_TARGETS”表示有一个名为“版本”的新目标。
“PRE_TARGETDEPS”表示在完成任何其他操作之前需要存在“version.h”(如果尚未制作,则强制执行)。
答案 1 :(得分:0)
一个更简单的解决方案,即使@jwernemy是解决它的好方法:
VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)