Какие изменения необходимо внести в файл .pro
, если я хочу выполнить команду chmod
, выполнить выходной двоичный файл или выполнить некоторые другие операции.
Как выполнить команду оболочки после компиляции, завершенной с .pro в QT?
Ответ 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
Ответ 2
Если вы используете Qt Creator, вы можете добавить пользовательские шаги сборки на панели "Проекты": http://doc.qt.nokia.com/qtcreator-2.1/creator-build-settings.html#adding-custom-build-steps
Ответ 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
просто выполните эту вещь.