Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
7 / 7 / 1
Регистрация: 23.02.2013
Сообщений: 24

Запуск exe файла средствами qmake перед компиляцией

22.06.2013, 14:24. Показов 6424. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех форумчан, есть такая проблема, хочу инкрементировать версию билда при каждой компиляции проекта. К примеру я написал программу, которая умеет проставлять версию в *.h файле, но перед началом компиляции мне нужно вызвать эту exe программу. Ручками не вариант вообще! Может кто подскажет как это сделать в pro файле. В скриптах CMake такое есть, а вот в qmake не нашёл. Очень нуждаюсь в помощи, зарание всем спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2013, 14:24
Ответы с готовыми решениями:

Копирование некоторого файла в папку с exe-шником перед компиляцией и запуском программы
Всем здравствуйте. В XE-7 исполняемый файл проекта находится в папке Win32\Debug\. Программа работает с файлом базы данных *.mdb,...

Запуск внешней программы перед компиляцией
Задача следующая: Есть код типа: #define SITUATION(N, description) {return N;} void (SomeFunc(){ if (/*some_condition*/...

Где в XE5 можно настроить запуск внешнего приложения перед компиляцией проекта?
subj Есть исходник, который перед сборкой должен пропускаться черед внешний препроцессор. Никак не могу найти, где это...

10
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
22.06.2013, 17:09
http://qt-project.org/doc/qt-4... em-command
0
154 / 110 / 9
Регистрация: 12.06.2013
Сообщений: 168
22.06.2013, 18:01
system ведь вроде как выполняется только при запуске qmake, а топикстартеру нужно выполнять команду при каждой сборке. Или я что-то не понял?
0
7 / 7 / 1
Регистрация: 23.02.2013
Сообщений: 24
23.06.2013, 09:42  [ТС]
Способ предложенный модератором я проверю, zenw вы правильно думаете, мне нужно при каждой сборке запускать exe файл, Пока что альтернатива изучить CMake
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
23.06.2013, 14:35
Цитата Сообщение от zenw Посмотреть сообщение
system ведь вроде как выполняется только при запуске qmake, а топикстартеру нужно выполнять команду при каждой сборке. Или я что-то не понял?
qmake выполняется при любом изменении проекта, например при смене типа сборки дебаг/релиз и т.д. хотя он все равно все транслирует в make файлы
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
23.06.2013, 19:49
Цитата Сообщение от Чистый Посмотреть сообщение
например при смене типа сборки дебаг/рели
Зачем? qmake генерит Makefile, Makefile.Debug, Makefile.Release и для этого достаточно вызвать make с release/debug
Цитата Сообщение от maksimus1210 Посмотреть сообщение
В скриптах CMake такое есть
Откуда знаешь, если CMake не знаешь?
qmake как cmake и другая обертка над make, позволяет создавать свои правила.
Customizing Makefile Output
1
7 / 7 / 1
Регистрация: 23.02.2013
Сообщений: 24
24.06.2013, 17:05  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Откуда знаешь, если CMake не знаешь?
Знаю, потому что попалась однажды статья, в которой решалась моя задача. но через CMake, если ссылку найду, то выложу.

Добавлено через 17 минут
Вот попалась статья: http://qtcreator.blogspot.ru/2... mbers.html по qmake.

Добавлено через 7 часов 3 минуты
Получилось вызвать exe файл при каждой компиляции средствами qmake, вот код из *.pro файла:

C++ (Qt)
1
2
3
4
5
6
7
win32:incr.commands = soft\build.bat
QMAKE_EXTRA_TARGETS += incr
 
buildhook.depends = incr
CONFIG(debug,debug|release):buildhook.target = Makefile.Debug
CONFIG(release,debug|release):buildhook.target = Makefile.Release
QMAKE_EXTRA_TARGETS += buildhook
Только через батник запускается exe-шник, но в нём должен быть прописан полный путь к файлу.

Решение нашёл на странице: http://colby.id.au/pre-pre-bui... with-qmake
Там решение не только для windows!

Решение найдено, тема закрыто, огромное спасибо всем кто откликнулся!
2
7 / 7 / 1
Регистрация: 23.02.2013
Сообщений: 24
29.06.2013, 08:14  [ТС]
Продолжил изучение запуска исполняемого файла из под qmake под ubuntu, запуск любого скрипта осуществляется командой:
C++ (Qt)
1
QMAKE_PRE_LINK += file.sh
Так же можно написать:
C++ (Qt)
1
QMAKE_POST_LINK += file.sh
Так понимаю QMAKE_PRE_LINK это выполнение скрипта перед компиляцией, а QMAKE_POST_LINK соответственно после. К сожалению у меня скрипт выполняется долго, за это время компилятор успевает закомпилировать нужный мне файл . Позже проверю эту же форму записи для bat файлов под windows.
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
01.07.2013, 10:55
не правильно вы делаете, точнее правильно но не логично, логичнее всего в качестве версии билда ставить номер комита в репозитории git/mercurial/svn или чем вы там пользуетесь, так проще будет понять в какой версии проблема и ее получить, в вашем же случае вы понятия не имеет какой код соответствует конкретной версии приложения.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
01.07.2013, 11:38
Цитата Сообщение от maksimus1210 Посмотреть сообщение
Так понимаю QMAKE_PRE_LINK это выполнение скрипта перед компиляцией, а QMAKE_POST_LINK соответственно после.
вранье. QMAKE_PRE_LINK/QMAKE_POST_LINK это выполнение перед и после линковки, а не компиляции.
0
7 / 7 / 1
Регистрация: 23.02.2013
Сообщений: 24
02.07.2013, 09:01  [ТС]
Как то в интернете мне попалась статья по ведению версии программы, там приводился пример с вот таким файликом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef VERSION_H
#define VERSION_H
 
namespace Version
{
    static const int MAJOR = 0;
    static const int MINOR = 0;
    static const int REVISION = 22;
    static const int BUILD = 80;
}
 
#endif // VERSION_H
Как видно там и номер ревизии svn есть и номер билда, мне эта идея показалась очень полезной и я решил в своём проекте поступить точно также, так как тоже использую svn. Номер ревизии у меня также записывается в файл автоматически, получается, что в ручную я ставлю только первые две цифры: MAJOR и MINOR.

QMAKE_PRE_LINK/QMAKE_POST_LINK это выполнение перед и после линковки, а не компиляции
Вы правы, мой exe-шник запускается перед линковкой, соответственно после компиляции, ну мне уже этого достаточно и поэтому решил на этом остановиться.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2013, 09:01
Помогаю со студенческими работами здесь

Помогите с компиляцией *.exe файла простого приложения
Всех приветствую и прошу помочь разобраться с проблемой. Я недавно начал изучать язык, но кое-что уже получилось. Я создал простейшее...

Посыпался Qt, не запускается qmake.exe
Приветствую! Как-то днём после ночного кодинга, открываю я Qt, а он жалуется на файл qmake Переустановила оный уже раз 5. После...

Почему при чтении exe файла средствами python выводит ошибку?
Вот сам код: file = open("f.exe", "r", encoding="cp1251") print(file.read()) (ничего сложного) Но вот когда открываю...

Невозможно запустить процесс qmake.exe
Здравствуйте, после прочтения всех тем на тему QT не смог найти ответа который мне поможет. Последняя надежда на то, что кто то поможет. ...

Запуск exe файла
Здравствуйте. Бейсиком не занимался давно. Возникла проблема. Помогите. Есть исполняемый exe файл (без dll) с определённой программой....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru