假设我有以下生成文件:
SRC = trav.cpp
LSRC = node.cpp tree.cpp
LIB = lib/libvtree.so
OBJS = $(patsubst %.cpp,obj/%.o,$(SRC))
LOBJS = $(patsubst %.cpp,obj/%.o,$(LSRC))
$(LOBJS) : $(LSRC)
$(CC) -fPIC -o $@ -c $<
$(OBJS) : $(SRC)
$(CC) -o $@ -c $<
$(LIB) : $(LOBJS)
$(CC) -shared -o $@ $(LOBJS) $^
trav.exe: $(LOBJS) $(OBJS) $(LIB)
$(CC) -o $@ $(LFLAGS) $(OBJS) -Llib libvtree -lstdc++
基本上,我正在尝试将 2 组 cpp 文件编译:$(LSRC) 到库中,$(SRC) 到链接到该库的可执行文件中。
但是当我尝试“制作”它时,我收到以下错误:
gcc -fPIC -o obj/node.o -g -DMEMPOOL -c src/node.cpp
gcc -fPIC -o obj/tree.o -g -DMEMPOOL -c src/node.cpp
它不断尝试将 node.cpp 编译到两个 .o 文件中。
是否有一种方法可以为单独的文件集指定单独的规则,而无需拆分目录树并使用递归 make。
谢谢。