gpt4 book ai didi

c - Makefile:一个命令输入多个文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:26 29 4
gpt4 key购买 nike

我有一个问题:我的来源有例如group1_x.c, group1_y.c, group1_z.c and group2_x.c, group2_y.c, group2_z.c.

现在我的 Makefile:

all: group1*.o group2*.o
gcc -o myapp group1*.o group2*.o $(FLAGS)

group1.o:
gcc -c group1*.c -o group1.o


group2.o:
gcc -c group2*.c -o group2.o

好吧,这行不通而且显然行不通,因为指定了一个输出文件,但可能有十个输入文件!我现在的问题是:是否有可能让 gcc 将每个 group1*.c 编译成相应的 group1*.o 文件(不告诉 make,有多少 fies),然后让 gcc 链接这些东西?我想这对 * 是行不通的,make 中可能有类似“while”/“for”的东西吗?^^

谢谢你了!

PS.: 我搜索了“make”、“multiple files”、“multiple input”等,但一无所获,希望我没有遗漏任何东西

最佳答案

这样做就可以了:

OBJS := group1_x.o group1_y.o group1_z.o group2_x.o group2_y.o group2_z.o

myapp: $(OBJS)
gcc -o myapp $^ $(FLAGS)

不需要其他规则,因为 Make 已经有一个从 foo.c 构建 foo.o 的内置规则。将规则的目标作为规则实际构建的文件几乎总是一个好主意(例如,如果规则构建的是 myapp,则不要调用目标 all >).

如果你想自动构建对象列表(我不推荐),你可以这样做:

SRCS := $(wildcard group1_*.c group2_*.c)
OBJS := $(SRCS:.c=.o)

关于c - Makefile:一个命令输入多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19014030/

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