Как добавить шаг предварительной сборки в qmake / qtcreator? - PullRequest
10 голосов
/ 22 февраля 2011

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

В простых Makefiles я делаю так:

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

VERSION: .git
    git describe > VERSION

Как использовать что-то похожее с qmake?

Ответы [ 2 ]

19 голосов
/ 03 марта 2011

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

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

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

0 голосов
/ 20 апреля 2015

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

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