我在“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 $@
显然,错误来自最后一个模式规则。我知道有一个简单的解决方案,但不确定是什么。
答案 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 $@