我有以下 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
规则)。我可能错过了一些基本的东西。也许有更好的方法来处理这样的项目并将不同的部分清楚地分开在目录中?
谢谢,亚历克斯