Я пытаюсь настроить makefile для makefile, чтобы экспортировать наши файлы-макеты balsamiq в png-файлы автоматически, но я боюсь, что не могу делать головы или хвосты того, как создавать общее правило для этого, без явного перечисления всех файлов, которые я хочу экспортировать.Использование nmake с подстановочными знаками в make-файле
This page подробно описывает синтаксис командной строки для экспорта файлов, а this page содержит пример, который похож, что содержит общее правило для .obj-файлов в .exe-файлы.
Makefile, я пытался до сих пор выглядит следующим образом:
.bmml.png:
"C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< [email protected]
Но это не работает.
Если я просто запустить NMAKE (с некоторыми устаревшими PNG файлов), NMake просто делает это:
[C:\Temp] :nmake
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
[C:\Temp] :
Если я прошу его построить один конкретный файл, он делает это:
[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] :
Какие-нибудь гуру-красавицы, которые могут меня выпрямить?
Пример Makefile, который просто делает .dat файлы из .txt файлов, копируя их, чтобы экспериментировать с, выглядит следующим образом:
.txt.dat:
copy $< [email protected]
это не делает ничего, как хорошо, так ясно, что я не понимая, как такие общие правила работают. Нужно ли указывать выше цель, которая каким-то образом перечисляет файлы, которые я хочу?
Edit: В ответ на новый ответ:
Это Makefile:
{}.txt{}.dat:
copy $** [email protected]
с этим файлом (test.dat)
1
2
3
и команды:
NMAKE test.txt
Выдает сообщение об ошибке:
[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.
Это очень хорошо. Единственное, что я нахожу, что он перестраивает каждый раз, даже когда цель обновлена. Как можно также пропустить его, если цель более новая, чем исходная? – CashCow 2011-12-29 17:54:18