0

私は現在、さまざまなターゲット(デバッグ、開発、リリースなど)をコンパイルできるmakefileを作成しています。リンクとコンパイルのルールは次のようになります。

$(DEVELOPMENT_OUT): $(subst rep,development,$(OBJS))
    g++ -o $(DEVELOPMENT_OUT) $(subst rep,development,$(OBJS))

obj/development/%.o: src/%.cpp
    g++ -c -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"

今、私はこの出力を取得します:

make: *** No rule to make target 'obj/development/Main.o', needed by 'bin/Development.exe'.  Stop.

しかし、パターンルールはMain.oに適用されるべきではありませんか?

GNU Make 3.82.90はMinGWを使用しています。

4

1 に答える 1

1

なぜそれが機能しないのかを言うのに十分な情報がここにありません。ファイルがあることが確実な場合は、src/Main.cppmakeがそのルールを選択する必要があります。cppファイルはソースファイルですか、それとも生成されたファイルですか?それが生成された場合、おそらく実際の問題は、生成が発生する場所の下位にあります。make -dを使用して、makeが何をしているのか、なぜこのルールが気に入らないのかを確認できます。

于 2013-03-18T13:13:27.477 に答える