ディレクトリ階層を次の形式にするために 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.
そのため、現在の間違いは最終的な実行可能ファイルのルールにあるように感じますが、それを修正する方法がわかりません。
これについて何か考えはありますか?どんな入力でも大歓迎です!