Подтвердить что ты не робот

Как выполнить команду оболочки после компиляции, завершенной с .pro в QT?

Какие изменения необходимо внести в файл .pro, если я хочу выполнить команду chmod, выполнить выходной двоичный файл или выполнить некоторые другие операции.

4b9b3361

Ответ 1

У меня была аналогичная проблема. Я хотел, чтобы специальный инструмент (версия) запускал код каждый раз, когда выполнялся Makefile. Здесь решение:

(для чтения в Руководство Qmake, Настройка среды qmake, Раздел: Настройка вывода Makefile)

Создайте собственную цель Makefile. Укажите команду и т.д.

mytarget.target = .buildfile
mytarget.commands = touch $$mytarget.target

QMAKE_EXTRA_TARGETS += mytarget

Таким образом, у вас есть дополнительная цель, которую вы можете вызвать с помощью make mytarget, например. Если вы хотите связать это вместе с фактическим значением buildtarget, вам нужно будет добавить:

POST_TARGETDEPS += mytarget

Надеюсь, что это поможет.

С уважением, D

Ответ 3

Правильный ответ зависит от того, что вы хотите, и когда. Однако, как видно из некоторых ранее размещенных комментариев здесь QMAKE_POST_LINK, вероятно, вы хотите, а не POST_TARGETDEPS.

Проверьте этот связанный пост: QMake: выполнить script после сборки

Во-первых, когда вы используете POST_TARGETDEPS, который срабатывает до того, как ваш exe создается (в Windows) или до того, как он воссоздается (в Linux)! QMake работает по-разному в зависимости от платформы и комплимента.

Мне нужно было выполнить некоторую "обработку символов" на exe, когда она была перекомпилирована. POST_TARGETDEPS дал мне проблемы как в Windows (с использованием mingw), так и в Linux (с использованием gcc). В Windows он преждевременно выполнял мой script, а в Linux он перезаписывал мой exe после того, как я его модифицировал (т.е. Добавил обратно свою отладочную информацию в exe после того, как разделил ее на внешнем script). Тем не менее, QMAKE_POST_LINK работал отлично, в обоих случаях. Это также короткое, сладкое и более четкое сравнение!

Ответ 4

Другой способ сделать вещи в заданном порядке - использовать пустую "супер" цель:

super.depends = target_pre first target_post
QMAKE_EXTRA_TARGETS += super

Где first - задан по умолчанию qmake, а target_pre и target_post - некоторые пользовательские цели. Теперь make super просто выполните эту вещь.