Вы должны проверить следующие свойства замыкающих и посмотреть на образец ниже:
- $ @ - означает имя текущего целевого файла, в этом случае это соответствует значению APP.
- $ < - означает один файл, который является новее, чем цель, от которой зависит цель.
- $? - означает список файлов, более новых, чем текущая цель, от которой зависит цель.
.SUFFIXES: .cpp.exe
CPP = cl
EXTRAFLAGS =
CPPFLAGS = /Od /D "WIN32" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /ZI /TP /errorReport:prompt
FILES = Exercise35
APP = Exercise35.exe
.cpp.exe:
$(CPP) $(EXTRAFLAGS) $(CPPFLAGS) /c $<
all : $(APP)
$(APP) : $(FILES)
$(CPP) $(EXTRAFLAGS) $(CPPFLAGS) [email protected] $(FILES)
clobber : clean mrproper
clean:
del $(FILES)
mrproper:
del $(APP)
Я получил это от моего старого шаблона Makefile, обратите внимание, что будут появляться «умный» и гибкий, как вы можете изменить флаг специально для отладки/выпуска в файле один макияж, выполняя как этот
make EXTRAFLAGS="/D _DDEBUG"
Это будет проходить в дополнительные определения в Makefile, чтобы включать _DDEBUG
макро, если вы хотите построить релиз, оставить вне EXTRAFLAGS в командной строке.
Edit: Согласно точке отказа Майка, я подумал, что было бы полезно включить дополнительные правила, так что вы можете очистить папку с ехе-х и объектный код, лежащий вокруг ... Это был мой оригинальный шаблон Makefile от AIX (который я использовал и под Linux ...) Спасибо Майку за головы!
Надеюсь, это поможет, С уважением, Tom.
Я сделал это и получил: NMAKE: фатальная ошибка U1073: не знаю, как сделать '"/ D _DEBUG"' – AlanT
Сделанное вами изменение работает. Спасибо! – AlanT