7

こんにちは、Visual Studio に頼るのではなく、コマンド ラインとメイクファイルを使用してプログラムをビルドする方法を試してみることにしました。.obj ファイルにコンパイルしてリンクするプロセスに慣れた後、NMake に移行しました。複数のフォルダーにあるソース ファイルを .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

1 に答える 1

7

この質問は 1 年半の間無視されていましたが、最近 4 票の賛成票を集めました。

実際に質問は述べられていませんが、暗黙の質問は次のとおりです。makefile で %-pattern ルールに従えないのはなぜですか?nmake

その答えは、MSnmakeは %-pattern ルールをまったくサポートしていないということです。MSnmakeとその推論規則のドキュメントは簡単に見つかります。

GNUmakeおよびその他の make ツールは%-pattern rulesをサポートしています。ここでの makefile はmake、明らかな失敗により GNU でも失敗します。

于 2014-04-10T08:21:11.813 に答える