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 回答