Как запускать команды git при сборке приложения Qt - PullRequest
0 голосов
/ 18 мая 2018

Сценарий:
У меня есть приложение Qt с QtApp.pro некоторым кодом C ++ в main.cpp.Чтобы не усложнять этот вопрос, предположим, что это пустое приложение QtQuick2, созданное с помощью мастера приложений QtCreator.

Вопрос:
Можно ли запустить некоторые команды Qt в .pro файлы или код C ++ в main.cpp?

Что если я захочу запустить эту команду git git rev-parse HEAD из моего QtApp.pro или main.cpp и вставить идентификатор фиксации где-нибудь в моем пользовательском интерфейсе, чтобы показать идентификатор фиксации выпуска?Является ли это возможным?Как?

Среда:
Версия Qt Я работаю в Qt 5.9.3
Операционная система: MacOS High Sierra

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Можно ли встроить команду в pro-файл и получить доступ к переменной pro-файла в std :: string?

Чтобы запустить команду в pro-файле, этот пост, Запуск программы / скрипта из QMake , показывает, как запустить скрипт в .pro.Я думаю, что вы можете написать свою команду git в этом скрипте.

Чтобы получить доступ к переменной pro file в std :: string.Вы можете передать файловую переменную с помощью опции -D gcc, которую вы можете определить с помощью QMAKE_CFLAGS в файле .pro.этот пост, Как определить строковый литерал в командной строке gcc? показывает, как использовать опцию -D.

0 голосов
/ 18 мая 2018

Вам нужно отдельно подумать о времени сборки (включая время компиляции) и времени выполнения .В общем (вспомните сценарий кросс-компиляции или просто приложение Qt , развернутое на других компьютерах), которое может произойти на разных машинах и в разные дни.

Во время выполнения вы можете использовать QProcess для запуска какой-либо команды git (или любой другой программы или сценария, которые вам нужно запустить).Конечно, вам нужно установить git и, возможно, ваше дерево исходного кода , которое будет доступно во время выполнения (в развернутом 1020 * и установленном приложении Qt, которое может быть неслучай по умолчанию; например, большинство приложений Qt в моем дистрибутиве Linux не установлены с их деревом исходного кода).

Во время сборки на Unix-подобных машинах .pro QtФайл проекта генерирует Makefile, который используется make для сборки.Makefile может содержать git команды.См. _timestamp.c target этого Makefile (без использования Qt, написанного от руки, не сгенерированного qmake) в качестве примера;он содержит подробную информацию о текущем коммите git.

Как настроить qmake для генерации пользовательских команд в Makefile - это другой вопрос;Вы можете добавить пользовательских целей .

...