gpt4 book ai didi

compilation - 使/生成文件 : realize that there is a new (not changed) source file

转载 作者:行者123 更新时间:2023-12-04 02:38:21 25 4
gpt4 key购买 nike

总的来说,我的 makefile 可以工作。既然有人会问,这里仅供引用:

HEADERS = *.h
OBJS = *.o
MYFORWARDS = *.c
WARNS = -Wall
CC = gcc
CFLAGS = -mwindows -Wall
LDFLAGS = -mwindows -lkernel32 -luser32
all : my.exe
my.exe : ${OBJS}
${CC} -o "$@" ${OBJS} ${LDFLAGS}
%.o : %.c ${HEADERS}
${CC} ${CFLAGS} -c $< -o $@

我喜欢 *.o*.c,所以我不必在每次添加 .c 时都编辑 makefile。

Make 通常反向工作:对于每个目标,查看其源之一是否发生变化,如果发生变化则重建。

我不想改变它,因为这是 make 的全部意义所在,但是有一个异常(exception)。

问题 是,当我创建一个新的 .c 文件时,.o 文件还不存在,因此(使工作从 .o 向后)它甚至没有意识到有一个新的 .c

到目前为止,我所做的是每次创建新的 .c 时,我都会手动创建新的 .o 文件。

有没有更好的方法?提前致谢。

最佳答案

一种常见的方法是列出您的目标文件,而不是依赖通配符。

OBJS = main.o util.o something_else.o

在 GNU Make 中,您还可以使用函数,如 the manual 中所述,根据.c制作.o的列表:

OBJS := $(patsubst %.c,%.o,$(wildcard *.c))

关于compilation - 使/生成文件 : realize that there is a new (not changed) source file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105522/

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