1

ディレクトリ階層を次の形式にするために Makefile を使用する必要があるプロジェクトがあります。

[user@machine program]$ ls
bin  build  CHANGELOG  Makefile  src

そのような Makefile を作成しようとする私の試みは、これまでのところ成果がありませんでした。ここに私の考えがあります:

1) うまくいけば役立つものをいくつか定義する

SRCDIR    =$(PWD)/src    # Keep multiple *.cpp and *.h files in here
BUILDDIR  =$(PWD)/build  # Build all appropriate *.o files
BINDIR    =$(PWD)/bin    # Compile/link all *.o files for final executable

PROJ      = program      #This is the name of the final executable

そして、コンパイラーやいくつかのライブラリー・リンクなどを定義します (私はそれらについて心配していません)。

2) すべての対象:

all: $(BINDIR)/$(PROJ)

3) all ターゲットの依存関係:

$(BINDIR)/$(PROJ): $(BUILDDIR)/%.o
    $(CPP) $^ -o $@

4) 最後に、*.cpp ファイル

$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/%.h
    $(CPP) -c $(CFLAGS) $<

5) 実際にはどうなるの?

[user@machine program]$ make
make: *** No rule to make target `/home/user/program/build/%.o', needed by `/home/user/program/bin/program'.  Stop.

そのため、現在の間違いは最終的な実行可能ファイルのルールにあるように感じますが、それを修正する方法がわかりません。

これについて何か考えはありますか?どんな入力でも大歓迎です!

4

1 に答える 1

2
于 2012-08-06T18:14:21.880 に答える