C++ 如何制作大量类似的可执行文件
我有一个带有makefile的测试目录,如:C++ 如何制作大量类似的可执行文件,c++,c,makefile,gnu,C++,C,Makefile,Gnu,我有一个带有makefile的测试目录,如: EXECS = pgm1 pgm2 pgm3 pgm4 pgm5 ... OBJS = $(addsuffix .o, $(EXECS)) all: $(EXECS) %.o : %.c $(CC) -c $< -o $@ $(IFLAGS) $(EXECS) : $(OBJS) $(CC) $@.o -o $@ $(LFLAGS) pgm1 : pgm1
EXECS = pgm1 pgm2 pgm3 pgm4 pgm5 ...
OBJS = $(addsuffix .o, $(EXECS))
all: $(EXECS)
%.o : %.c
$(CC) -c $< -o $@ $(IFLAGS)
$(EXECS) : $(OBJS)
$(CC) $@.o -o $@ $(LFLAGS)
pgm1 : pgm1.o
$(CC) $< -o $@ $(LFLAGS)
% : %.o
$(CC) $< -o $@ $(LFLAGS)
%:%.o规则应该可以工作,但我猜make使用的是更高优先级的默认规则
%:%.c
$(CC) $@.o -o $@
直接从C语言编译和链接,不需要变量
您可以重新定义此默认规则以满足您的需要,也可以通过编写
%:%.c
如果没有命令,请参见模式规则不起作用,因为您已经在
$(EXECS):$(OBJS)
行中为目标定义了显式规则。显式规则优先于隐式规则,如模式规则。删除显式规则,它将按照您的需要工作:
EXECS = pgm1 pgm2 pgm3 pgm4 pgm5 ...
all: $(EXECS)
%.o : %.c
$(CC) -c $< -o $@ $(IFLAGS)
% : %.o
$(CC) $< -o $@ $(LFLAGS)
EXECS=pgm1 pgm2 pgm3 pgm4 pgm5。。。
全部:$(执行)
%.o:%.c
$(CC)-c$<-o$@$(IFLAGS)
%:%
$(CC)$<-o$@$(LFLAGS)
您可以尝试这样做:隐式规则使用LDFLAGS,而不是LFLAGS。
EXECS = pgm1 pgm2 pgm3 pgm4 pgm5 ...
all: $(EXECS)
%.o : %.c
$(CC) -c $< -o $@ $(IFLAGS)
% : %.o
$(CC) $< -o $@ $(LFLAGS)