我有一个项目,我需要使用 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.
所以我觉得我目前的错误是在我的最终可执行文件的规则中,但我不确定如何修复它。
对此有什么想法吗?非常感谢任何输入!