Makefile用于生成不同目录的对象

时间:2013-11-17 19:43:31

标签: makefile

我在“src /”文件夹中有源代码,想要编写一个Makefile来生成“lib /”文件夹中的对象文件。以下是我尝试的代码,但它不起作用:

DIRSRC=src/
DIRLIB=lib/

SRC=a.cc b.cc c.cc
OBJ=$(SRC:.cc=.o)

$(OBJ): $(DIRLIB)%.o: $(DIRSRC)%.cc
    $(CC) -c $< -o $@

显然,错误来自最后一个模式规则。我知道有一个简单的解决方案,但不确定是什么。

1 个答案:

答案 0 :(得分:1)

你想使用类似的东西:

DIRSRC=src/
DIRLIB=lib/

SRC=a.cc b.cc c.cc
# Add DIRLIB to the beginning of each entry in OBJ so that they match the static pattern rule target-pattern.
OBJ=$(addprefix $(DIRLIB),$(SRC:.cc=.o))

# Give make a default target that builds all your object files.
all: $(OBJ)

$(OBJ): $(DIRLIB)%.o: $(DIRSRC)%.cc
        $(CC) -c $< -o $@