Как выполнить команду оболочки после завершения компиляции из .pro в QT? - PullRequest
19 голосов
/ 10 мая 2011

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

Ответы [ 4 ]

27 голосов
/ 10 мая 2011

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

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

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

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

QMAKE_EXTRA_TARGETS += mytarget

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

POST_TARGETDEPS += mytarget

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

С наилучшими пожеланиями
D

0 голосов
/ 25 сентября 2017

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

super.depends = target_pre first target_post
QMAKE_EXTRA_TARGETS += super

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

EDIT : похоже, что в последних версиях Qt сборка зависимостей выполняется в paralell, поэтому это решение не будет работать.

0 голосов
/ 13 апреля 2017

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

. Проверьте этот пост: QMake: выполнить скрипт после сборки

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

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

0 голосов
/ 10 мая 2011

Если вы используете Qt Creator, вы можете добавить пользовательские шаги сборки на панели "Проекты": http://doc.qt.nokia.com/qtcreator-2.1/creator-build-settings.html#adding-custom-build-steps

...