Makefile 如何将所有规则添加到处理任务A(然后)——>;任务B

Makefile 如何将所有规则添加到处理任务A(然后)——>;任务B,makefile,Makefile,我有 我希望在默认情况下拥有某种all,它将首先构建库,然后再进行todo 类似all:ctodo->todo(伪代码)如何创建?您的问题有点不清楚,但一般来说,让make执行规则的方法是将一个规则作为另一个规则的先决条件: todo: $(SRC) $(CC) -o todo $^ $(CFLAGS) ctodo: $(LIBS) $(CC) ${INCLUDES} -c -o todo.a $^ $(CFLAGS) (我使用了|,这样ctodo就不会出现在$^中)为

我有

我希望在默认情况下拥有某种
all
,它将首先构建库,然后再进行todo


类似all:ctodo->todo(伪代码)如何创建?

您的问题有点不清楚,但一般来说,让make执行规则的方法是将一个规则作为另一个规则的先决条件:

todo:   $(SRC)
    $(CC) -o todo $^ $(CFLAGS)

ctodo:  $(LIBS)
    $(CC) ${INCLUDES} -c -o todo.a $^ $(CFLAGS)

(我使用了
|
,这样
ctodo
就不会出现在
$^
中)

为什么要先构建库?
todo
需要它吗?@Beta还没有,但将来会。出于好奇,GNU Make手册中定义了仅限订单的先决条件的
语法。
.PHONY: all
all: todo

todo: $(SRC) | ctodo
$(CC) -o todo $^ $(CFLAGS)

ctodo:  $(LIBS)
$(CC) ${INCLUDES} -c -o todo.a $^ $(CFLAGS)