【发布时间】:2013-05-07 15:06:58
【问题描述】:
假设我有以下makefile:
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 有没有办法为不同的文件集指定不同的规则,而不用拆分 目录树并使用递归生成。
谢谢。
【问题讨论】:
标签: makefile