El GNU make manual dicecuando las reglas de patrones múltiples coincida con el destino
Es posible que más de una regla patrón cumplirá con estos criterios. En ese caso, make elegirá la regla con el tallo más corto (es decir, el patrón que coincida más específicamente).
Por lo tanto, me sorprende que:
$ touch make_specific.cpp
$ cat Makefile.general_first
%.o: %.cpp
@echo using general rule
$(CXX) -c $< -o [email protected]
%_specific.o: %_specific.cpp
@echo using specific rule
$(CXX) -c $< -o [email protected]
$ make -B -f Makefile.general_first make_specific.o
using general rule
g++44 -c make_specific.cpp -o make_specific.o
reglas de patrones múltiples coinciden con el objetivo, y ya que la raíz de la regla %_specific.o : %_specific.cpp
('hacer' en este caso) es más corto que el tallo de la %.o : %.cpp
regla, esperaba que se seleccionara la regla específica, pero no es así.
¿Qué me estoy perdiendo?
Gracias. Estoy usando 3.81, así que esa es probablemente la causa. Esperando a que los administradores del sistema instalen 3.82 para verificar. –
¿Hay alguna manera de lograr esto con clearmake en lugar de hacer GNU? No puedo encontrar ninguna información sobre la selección de reglas de patrones en clearmake ... – dragonator
Gracias. Me estaba rascando la cabeza tratando de entender por qué sucedía esto. Mi error; Nunca presté atención al número de versión que estaba usando :) – Fernando