C++ 如何制作大量类似的可执行文件

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

我有一个带有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.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)