2012-10-06 8 views
6

こんにちは、私は、Visual Studioに頼るのではなく、コマンドラインとmakefileを使ってプログラムをビルドする方法を学びました。 .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

この質問は1年半の間無視されましたが、最近では4つのアップノートが魅力的です。

質問は実際には述べられていませんが、暗黙の質問はnmakeは私のメイクファイルの%パターンルールに従えないのですか?

これに対する答えは、MS nmakeは%パターンルールをまったくサポートしていません。 The documentation of MS nmakeおよびそのinference rulesが容易に見つかります。

GNU makeなどのメイクツールをサポートしています。%-pattern rules。 GNU makeのmakefileも、明らかな破損のために失敗するでしょう。

関連する問題