2012-10-06 66 views
6

嗨,我決定嘗試學習如何通過命令行和makefile建立程序,而不是依靠Visual Studio爲我完成。在熟悉編譯成.obj文件和鏈接的過程之後,我轉向了NMake。我已經編寫了一個基本的makefile,用於將位於多個文件夾中的源文件編譯爲.obj文件,將.obj文件的每個文件夾鏈接到.lib文件,然後將.lib文件鏈接到.exe文件中。NMake模式規則

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

這個問題在一年半的時間裏被忽略了,但最近卻吸引了4人。

實際上沒有問題,但隱含的問題是:爲什麼nmake不能遵循我的makefile中的%-pattern規則?

對此的回答是MS nmake根本不支持%-pattern規則。 The documentation of MS nmake和它的inference rules很容易找到。

GNU make和其他一些製作工具支持%-pattern rules。由於明顯的錯誤,這裏的makefile在GNU make中也會失敗。