我有以下 Makefile,我想用它serial.c在 Linux 中构建一个位于当前目录中的项目,但它使用内部的 C++ 库,src并且include应该构建到一个目录obj中,以保持所有文件清晰和分离。
#define some paths
DHOME = ${HOME}/Serial
SRC = ${DHOME}/src
INCLUDE = ${DHOME}/include
BIN = ${DHOME}/bin
OBJ = ${DHOME}/obj
# compiler
CFLAGS = -I$(INCLUDE)
CXX = g++ -g ${INCLUDE}
MAKE = ${CXX} -O -Wall -fPIC -c
$(OBJ)/%.o: $(SRC)/%.cc
$(MAKE) $(CFLAGS) $< -o ${OBJ}/$@
serial: $(OBJ)/%.o
${CXX} -o $@ $@.c $< $(CFLAGS)
.PHONY: clean
clean:
@rm -f serial $(OBJ)/*.o
make serial尝试或只是时的错误消息make是
make: *** No rule to make target `/home/alex/Serial/obj/%.o', needed by `serial'. Stop.
但是在查看 Makefile 时,似乎我已经指定了这个规则(规则之上的serial规则)。我可能错过了一些基本的东西。也许有更好的方法来处理这样的项目并将不同的部分清楚地分开在目录中?
谢谢,亚历克斯