Привет, я решил попробовать и научиться создавать программы с помощью командной строки и make-файлов, вместо того чтобы полагаться на Visual Studio, чтобы сделать это для меня. После ознакомления с процессом компиляции в файлы .obj и компоновки я перешел на NMake. Я написал основной make-файл, чтобы попытаться скомпилировать исходные файлы, расположенные в нескольких папках, в файлы .obj, связать каждую папку файлов .obj с файлами .lib, а затем связать файлы .lib с файлом .exe.
CC=cl /c /EHsc /Fo
LIB=lib /OUT:
LINKER=link /OUT:
EXEC_NAME=Test.exe
DEL=del
MAKE=nmake
OUT=.\out
all: $(OUT)\*.lib
$(LINKER)$(EXEC_NAME) *.lib
clean:
$(DEL) $(OUT)
rebuild:
$(MAKE) clean
$(MAKE) all
$(OUT)%.lib: $(OUT)\%\*.obj
$(LIB)%.lib $(OUT)%\*.obj
%(OUT)\%\:
$(CC)$(OUT)\%\ .\%\*.cpp
Когда я пытаюсь запустить его с nmake all
это говорит мне: NMAKE : fatal error U1073: don't know how to make '.\out\*.lib'
Заранее спасибо.
Этот вопрос по понятным причинам игнорировался в течение полутора лет, но в последнее время привлек 4 отзыва.
На самом деле ни один вопрос не сформулирован, но подразумеваемый вопрос: Почему не могу nmake
следовать правилам% -pattern в моем make-файле?
Ответ на это MS nmake
вообще не поддерживает правила% -шаблонов. Документация MS nmake
и его правила вывода легко найти.
GNU make
и некоторые другие инструменты поддержки make Правила% -шаблонов. Makefile здесь также потерпит неудачу в GNU make
из-за явных ошибок.
Других решений пока нет …