GNU make: transforma cada requisito previo en objetivo (implícitamente)

Tengo otromakesimilar a una herramienta que produce un XML como un artefacto después de analizar mi archivo MAKE que luego procesaré con Python.

Me simplificaría mucho las cosas, si pudieramake considere cada requisito previo como un objetivo real porque entonces esta otra herramienta clasificará cada archivo como un "trabajo".

Este es un fragmento de mi archivo MAKE:

.obj/eventlookupmodel.o: C:/Users/User1/Desktop/A/PROJ/src/AL2HMIBridge/LookupModels/eventlookupmodel.cpp C:\Users\User1\Desktop\A\PROJ\src\AL2HMIBridge\LookupModels\eventlookupmodel.h \
        C:/Users/User1/Desktop/A/PROJ/qt5binaries/include/QtCore/qabstractitemmodel.h \
        C:/Users/User1/Desktop/A/PROJ/qt5binaries/include/QtCore/qvariant.h \
        ...

Quisiera paramake pensar que tengo una regla ficticia para cada requisito previo como a continuación:

C:/Users/User1/Desktop/A/PROJ/qt5binaries/include/QtCore/qvariant.h: 
     @echo target pre= $@

 C:/Users/User1/Desktop/A/PROJ/qt5binaries/include/QtCore/qabstractitemmodel.h: 
    @echo target pre=$@

C:/Users/User1/Desktop/A/PROJ/src/AL2HMIBridge/LookupModels/eventlookupmodel.cpp :
    @echo target pre=$@

C:\Users\User1\Desktop\A\PROJ\src\AL2HMIBridge\LookupModels\eventlookupmodel.h:
    @echo target pre=$@

No me importa la forma exacta de la regla solo que cada archivo se considere un objetivo real.

Mi método para pasar esta regla sería establecer la variable MAKEFILES de esta manera

make all MAKEFILES=Dummy.mk

conDummy.mk que contiene esta regla para que no modifique los archivos MAKE.

He intentado lo siguiente hasta ahora.

Dummy.mk:

%.h: 
    @echo header xyz = $@

%: 
    @echo other xyz= $@

Esto funciona parcialmente.

Corromake all --trace --print-data-base MAKEFILES=Dummy.mk y puedo ver esomake "une" el%.h: regla a los archivos de encabezado. En el--print-data-base section, Veo que esa regla se asigna a los archivos de encabezado.

C:/Users/User1/Desktop/A/QNX_SDK/target/qnx6/usr/include/stddef.h:
#  Implicit rule search has been done.
#  Implicit/static pattern stem: 'C:/Users/User1/Desktop/A/QNX_SDK/target/qnx6/usr/include/stddef'
#  Last modified 2016-05-27 12:39:16
#  File has been updated.
#  Successfully updated.
#  recipe to execute (from '@$(QMAKE) top_builddir=C:/Users/User1/Desktop/A/HMI_FORGF/src/../lib/armle-v7/release/ top_srcdir=C:/Users/User1/Desktop/A/HMI_FORGF/ -Wall CONFIG+=release CONFIG+=qnx_build_release_with_symbols CONFIG+=rtc_build -o Makefile C:/Users/User1/Desktop/A/HMI_FORGF/src/HmiLogging/HmiLogging.pro
', line 2):
@echo header xyz = $@

Sin embargo, NO veo que se ejecute la regla "echo header xyz $ @".

Con respecto a%: regla, tampoco se ejecuta para el.cpp archivos ni "atados" a ellos en el--print-data-base sección. Sin embargo, está vinculado y ejecutado para objetivos existentes que no tienen sufijo, es decir

all: library binary

binary: | library
ifs:    | library

Para el%: regla, la razón de este comportamiento es debido a10.5.5 Reglas del patrón Match-Anything: Si no marca la regla match-anything como terminal, entonces no es terminal. Una regla de coincidencia de cualquier cosa que no sea terminal no puede aplicarse a un nombre de archivo que indique un tipo específico de datos. Un nombre de archivo indica un tipo específico de datos si algún objetivo de regla implícito que no coincide con nada coincide con él.

Si lo hago no terminal, sin dos puntos dobles, entonces la regla no se aplica a los tipos integrados como.cppa menos que anule la definición de las reglas integradas que niegan mi intención%: regla.

Si lo hago terminal,"no se aplica a menos que sus requisitos previos realmente existan". Pero un.h o.cpp técnicamente no tiene requisitos previos; ¿Puedo crear un archivo ficticio y tenerlo como requisito previo?

NOTA: Esto no tiene NADA que ver congcc -M Generacion. sí el-M la opción ayudaría en el caso específico de los archivos de encabezado y fuente, pero esta pregunta es para objetivos y requisitos previos más genéricos que ya existen en el archivo MAKE cuandomake es lanzado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta