Estoy intentando configurar un makemape nmake para exportar nuestros archivos de maqueta de balsamiq a archivos png automáticamente, pero me temo que no puedo entender cómo hacer una regla genérica para hacerlo, sin enumerar explícitamente todos los archivos que deseo exportar.Usando nmake con comodines en el archivo MAKE
This page detalla la sintaxis de la línea de comando para exportar los archivos, y this page contiene un ejemplo que parece que contiene una regla genérica para los archivos .obj a los archivos .exe.
El makefile que he probado hasta ahora es así:
.bmml.png:
"C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< [email protected]
Pero esto no funciona.
Si sólo tiene que ejecutar nmake (con algunos archivos PNG obsoletos), nmake sólo hace esto:
[C:\Temp] :nmake
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
[C:\Temp] :
Si lo pido para construir un archivo específico, se hace esto:
[C:\Temp] :nmake "TestFile.png"
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make '"TestFile.png"'
Stop.
[C:\Temp] :
¿Alguna gurú nmake que me pueda aclarar?
Un makefile ejemplo, que simplemente hace que los archivos .dat de archivos .txt copiándolos, para experimentar, es el siguiente:
.txt.dat:
copy $< [email protected]
esto no hace nada, así que claramente no estoy entender cómo tales reglas genéricas funcionan. ¿Debo especificar un objetivo anterior que de alguna manera enumere los archivos que quiero?
Editar: En respuesta a la nueva respuesta:
Este makefile:
{}.txt{}.dat:
copy $** [email protected]
con este archivo (test.dat)
1
2
3
y este comando:
NMAKE test.txt
Produce este mensaje de error:
[C:\] :nmake test.txt
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make 'test.txt'
Stop.
Esto es muy bueno. Lo único es que estoy encontrando que se reconstruye cada vez, incluso cuando el objetivo está actualizado. ¿Cómo podría uno también omitir si el objetivo es más nuevo que la fuente? – CashCow
@CashCow No veo ese problema. En el ejemplo de Eric, ¡el objetivo nunca existe! Simplemente echos un poco de texto, en realidad nunca crea un objetivo. Si agrega una regla 'copy $ <$ @', entonces también creará los objetivos. En ese caso, no reconstruye innecesariamente objetivos actualizados. –
Me tomó un tiempo resolver esto. Si su archivo MAKE no se llama 'makefile', entonces necesita usar' -f' en la invocación recursiva también. –