Как добавить шаг предварительной сборки в qmake / qtcreator?

Я хочу, чтобы скомпилированное приложение имело номер фиксации, контрольные суммы исходных файлов и другие вещи, которые будут доступны во время компиляции.

в простых Makefiles мне нравится это:

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

VERSION: .git
    git describe > VERSION

Как использовать что-то подобное с qmake?

2 ответов


Если вы должны были передать информацию о версии в виде включенного файла (скажем, "версия.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 строки рассказывают, как создать новый целевой объект под названием "версия", который генерирует "версию".ч." Это делается путем выполнения команд " ". Цель зависит от ".git"

"QMAKE_EXTRA_TARGETS" говорит, что есть новая цель, известная как "версия."

"PRE_TARGETDEPS" указывает, что " версия.h " должен существовать, прежде чем что-либо еще можно будет сделать (что заставляет его делать, если оно еще не сделано).


более простое решение, даже если @jwernemy как хороший способ его решения:

VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)