Вот еще одно решение:
TEMPLATE = aux
OBJECTS_DIR = ./
DESTDIR = ./
first.commands = my_batch_file.bat
QMAKE_EXTRA_TARGETS += first
QMAKE_CLEAN += batch_output.obj
Шаблон aux
в основном создает make-файл, который ничего не делает при запуске без указания цели.Переменные OBJECTS_DIR
и DESTDIR
устанавливаются в текущий каталог, чтобы qmake не создавал каталоги debug
и release
(важно установить для них ./
, а не просто .
; по крайней мере, дляWindows).Затем, используя QMAKE_EXTRA_TARGETS
, мы переопределяем цель first
для запуска пользовательской команды, когда make-файл вызывается без цели.
Это немного глупо, но оно выполняет свою работу.
Добавление: Если вы хотите предотвратить генерацию трех make-файлов (Makefile
, Makefile.Debug
, Makefile.Release
), вы можете добавить
CONFIG -= debug_and_release
Однако, если вы используете этои в зависимости от того, как вызывается make-файл (всегда вызывается вручную, вызывается файлом «subdirs» * .pro родительского каталога, ...), может потребоваться создать поддельные цели debug
и release
, чтобы избежать «без правил»сделать цель ... "ошибки.Например:
release.target = release
release-clean.target = release-clean
release-install.target = release-install
[...]
debug.target = debug
debug-clean.target = debug-clean
debug-install.target = debug-install
[...]
QMAKE_EXTRA_TARGETS += release release-clean release-install [...]
QMAKE_EXTRA_TARGETS += debug debug-clean debug-install [...]