Как добавить шаг предварительной сборки в 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 строки рассказывают, как создать новый целевой объект под названием "версия", который генерирует "версию".ч." Это делается путем выполнения команд "
"QMAKE_EXTRA_TARGETS" говорит, что есть новая цель, известная как "версия."
"PRE_TARGETDEPS" указывает, что " версия.h " должен существовать, прежде чем что-либо еще можно будет сделать (что заставляет его делать, если оно еще не сделано).
более простое решение, даже если @jwernemy как хороший способ его решения:
VERSION = $$system(-git-dir=$PWD/.git <PUT_YOUR_GIT_COMMANDS_HERE>)