gpt4 book ai didi

Makefile:多个目标的相同规则

转载 作者:行者123 更新时间:2023-12-04 22:47:14 24 4
gpt4 key购买 nike

我有一些目标(可以说是 3 个)。所以在makefile运行后,我想要3个可执行文件。

这是我现在所做的:

CC      = gcc
CFLAGS = -Wall -pedantic -ansi

ECHO = server_echo
ECHO_O = echo.o

FOO = server_foo
FOO_O = foo.o

ALL = $(ECHO) $(FOO)
ALL_O = ECHO_O FOO_O

all: $(ALL)

$(ECHO): $(ECHO_O)
$(CC) $(CFLAGS) -o $(ECHO) $(ECHO_O)

$(FOO): $(FOO_O)
$(CC) $(CFLAGS) -o $(FOO) $(FOO_O)

.PHONY: clean
clean:
- rm -f $(ALL)
- rm -f *.o
- rm -f core

%.o: %.c
$(CC) $(CFLAGS) -c $<

.PHONY: mci
mci: clean $(ALL)

在那里,我为目标 $(ECHO) 和 $(FOO) 复制了规则。有什么办法可以消除重复吗?就像是:
for target, target_o in $(ALL), $(ALL_O)
target: target_o
$(CC) $(CFLAGS) -o target target_o
end for

或者有其他方法可以解决我的问题吗?

谢谢你的帮助

最佳答案

没有比这更容易的了:

$(ECHO): $(ECHO_O)
$(FOO): $(FOO_O)

$(ECHO) $(FOO):
$(CC) $(CFLAGS) -o $@ $^

或者你可以去掉变量 ECHO_OFOO_O完全用 static pattern rule :
$(ECHO) $(FOO): % : %.o
$(CC) $(CFLAGS) -o $@ $^

关于Makefile:多个目标的相同规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com