2012-10-06 16 views
6

Witam Zdecydowałem się spróbować nauczyć się budować programy za pomocą wiersza poleceń i plików Makefile zamiast polegać na Visual Studio, aby zrobić to za mnie. Po zapoznaniu się z procesem kompilowania plików .obj i łączenia, przeszedłem na NMake. Napisałem podstawowy plik Makefile, aby spróbować skompilować pliki źródłowe zlokalizowane w wielu folderach do plików .obj, połączyć każdy folder plików .obj w pliki .lib, a następnie połączyć pliki .lib do pliku .exe.Reguły NMake Pattern

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 

Gdy próbuję uruchomić go z nmake all mówi mi: NMAKE : fatal error U1073: don't know how to make '.\out\*.lib'

Z góry dzięki.

Odpowiedz

4

Pytanie to zostało zrozumiale zignorowane przez półtora roku, ale ostatnio przyciągnęło 4 przegrane.

Nie jest zadeklarowane żadne pytanie, ale domyślne pytanie brzmi: Dlaczego nmake nie przestrzega reguł% -pattern w moim pliku Makefile?

Odpowiedź na to pytanie brzmi: MS nmake nie obsługuje w ogóle reguł% -pattern. The documentation of MS nmake i jego inference rules można łatwo znaleźć.

GNU make i kilka innych narzędzi do tworzenia narzędzi %-pattern rules. Makefile tutaj również zawiedzie w GNU make z powodu oczywistych błędów.