qmake: генерация файлов с помощью QMAKE_EXTRA_COMPILERS

Предположим, в проекте есть набор файлов, для которого нужно автоматически генерировать исходные или объектные файлы. Как это можно сделать? Вопрос этот отнюдь не праздный, сам же qmake в стандартной настройке должен уметь запускать препроцессоры Qt (moc, uic, rcc), которые генерируют .cpp и .h файлы для включения в проект.

qmake: как обязать make всегда вызывать qmake и зачем это нужно

Первое, что приходит в голову при взгляде на QMAKE_EXTRA_TARGETS — это организовать генерацию каких-то своих исходников. Классический случай — заголовочный файл с номером версии программы, полученной из системы контроля версий исходников. Но при ближайшем рассмотрении оказывается, что все не так просто, и кастомные цели годятся для подобного применения только в простейшем случае. И даже и в этом случае проще и надежнее поступить по-другому.

Экскурс в Makefile

Для понимания того, что я буду рассказывать в дальнейшем, необходимо достаточно четкое представление о том, как работает make и что из себя представляет Makefile. Для тех, кто не в курсе темы и мануал курить не горит желанием, я расскажу основные моменты. Сразу предупреждаю, что в тонкости я не вдаюсь и вообще сильно упрощаю дело. Но суть я постараюсь передать.