gpt4 book ai didi

c - 将目录依赖项指定为百分比规则时,Linux 上的 Make 行为非常奇怪

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

<分区>

我观察到一个简单的 makefile 的以下非常奇怪的行为:

对于一个 C 项目,假设我有 n>=2 个要在目录中编译的 .c 文件。

例如假设你有 a.c 和 b.c 来编译

我的 makefile 是:

OBJDIR = obj

all: $(OBJDIR)/a.o $(OBJDIR)/b.o
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)/%.o: %.c $(OBJDIR)
gcc -c $< -o $@

所以需要把a.o和b.o编译出来放到一个新的文件夹obj中。我想这样做是因为我发现将 .c 和 .o 文件放在同一个文件夹中很麻烦。此外,如果文件夹不存在,我想创建该文件夹,因为当我出于某种原因使用 git 上传项目时,它不会跟踪空文件夹。

在我的 Windows 机器上,它运行良好并且可以满足我的要求。

make
mkdir obj
gcc -c a.c -o obj/a.o
gcc -c b.c -o obj/b.o
make
make: Nothing to be done for 'all'.

但是在我的 linux 机器上它执行以下操作:

make
mkdir obj
gcc -c a.c -o obj/a.o
gcc -c b.c -o obj/b.o
make
gcc -c a.c -o obj/a.o
make
gcc -c b.c -o obj/b.o
make
gcc -c a.c -o obj/a.o
make
gcc -c b.c -o obj/b.o

我只在这里运行了 make 命令。其他线路是 make 的工作。我发现骑自行车的行为很烦人。

为什么会这样?

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