gpt4 book ai didi

c - 递归所有 C 文件

转载 作者:太空狗 更新时间:2023-10-29 16:48:50 26 4
gpt4 key购买 nike

我真的无法进入 makefile。在以前的项目中,我在 Makefile 中硬编码了所有编译任务:

all: compile_a compile_b compile_c

compile_a:
${CC} ${CFLAGS} ${A_SRC} -o ${A_OUT}

等等。

但由于最新项目的文件比之前的所有项目都多,我想编写更好的 make 任务,当然还有更少的字符,因为 make 对我来说不是很友好(这让他们很痛苦) ! :-P

我想要的:

  • 一个任务来统治他们(只是 make projectnamemake all,你知道吗?)
  • 编译每个 C 文件的一个任务(我阅读了一些关于此 %.o: %.c 语法的内容,但没有真正理解它)
  • 一个链接任务(如何获取所有 .o 文件并在不对每个文件进行硬编码的情况下链接它们?)
  • 一项清洁任务(哦,我能做到!)

项目结构是:

bin (binary goes here!)
src
some
directories
are
here

我不知道我是否需要目标文件的目录,我把它们放在了 ./bin 中,我认为这已经足够了,不是吗?

也许我只是需要一个能用简单的语言解释它的人!

编辑:正如有人指出的那样,没有真正的问题,所以这里是:

  • 如何将所有 C 文件递归编译为 bin/(filename).o
  • 如何在不知道文件名的情况下链接“bin/”中的所有 .o 文件

也许这有帮助。

最佳答案

试试这个:

CC = gcc
CFLAGS = -c -Wall -g -Os
LD = $(CC)
LDFLAGS = -lfoo

TARGET = MyProject

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

all: $(TARGET)

$(TARGET): $(OBJECTS)
$(LD) -o $@ $^ $(LDFLAGS)

# You don't even need to be explicit here,
# compiling C files is handled automagically by Make.
%.o: %.c
$(CC) $(CFLAGS) $^ -o $@

clean:
rm $(TARGET) $(OBJECTS)

关于c - 递归所有 C 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589614/

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