117.info
人生若只如初见

makefile如何编译文件夹下的文件

在Makefile中,可以使用通配符(wildcard)来获取文件夹下所有文件的列表,然后使用规则来编译这些文件。

以下是一个示例的Makefile,用于编译文件夹下的所有.c文件:

# 获取文件夹下所有的.c文件
SRCS := $(wildcard *.c)
# 生成对应的目标文件列表
OBJS := $(SRCS:.c=.o)
# 目标文件
TARGET := myprogram
# 编译规则
$(TARGET): $(OBJS)
gcc $^ -o $@
%.o: %.c
gcc -c $< -o $@
.PHONY: clean
clean:
rm -f $(OBJS) $(TARGET)

在这个Makefile中,首先使用通配符$(wildcard *.c)获取当前文件夹下所有的.c文件,并将它们保存到变量SRCS中。然后,通过将.c替换为.o,生成对应的目标文件列表OBJS

接下来,定义了两个规则。第一个规则$(TARGET): $(OBJS)表示生成目标文件$(TARGET)的依赖是所有的目标文件列表$(OBJS)。在规则的命令中,使用$^表示所有的依赖文件,$@表示目标文件,通过gcc命令将目标文件链接成可执行程序。

第二个规则%.o: %.c表示根据.c文件生成对应的目标文件。在规则的命令中,使用$<表示第一个依赖文件,通过gcc命令将.c文件编译成目标文件。

最后,定义了一个伪目标.PHONY: clean用于清理编译生成的目标文件和可执行程序。

要编译文件夹下的所有文件,只需在命令行中输入make即可。如果需要清理编译生成的文件,可以输入make clean

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe86eAzsLBwNTDVU.html

推荐文章

  • makefile中patsubst和wildcard函数如何使用

    在makefile中,patsubst和wildcard是两个常用的函数。 patsubst函数的语法为: $(patsubst pattern,replacement,text)
    它将text中符合pattern模式的部分替换...

  • makefile静态库连接的方法是什么

    在Makefile中,连接静态库的方法是使用-l标志指定要连接的静态库的名称,然后使用-L标志指定静态库文件所在的目录。
    以下是连接静态库的示例Makefile:

  • 【makefile笔记】patsubst和wildcard函数使用小结

    patsubst函数是GNU make中的一个内置函数,用于对指定的字符串进行模式替换。它的语法如下:
    $(patsubst pattern,replacement,text) 其中,pattern是要匹配...

  • makefile中的patsubst怎么使用

    在Makefile中,patsubst函数的作用是将一组字符串中的模式进行替换。
    patsubst函数的语法如下:
    $(patsubst pattern,replacement,text) 其中,pattern...

  • makefile怎么读取文件内容

    在Makefile中,你可以使用$(shell)函数来读取文件内容。
    假设你的文件名为file.txt,你可以使用以下命令来读取文件内容:
    content := $(shell cat fil...

  • windows批量加域的方法是什么

    Windows批量加入域的方法主要有以下两种: 使用自动域加入(AutoDomainJoin)工具:AutoDomainJoin是一种自动化脚本工具,可用于将多台计算机批量加入域。使用该...

  • win10不能加域如何解决

    若您的Windows 10无法加入域,请尝试以下解决方法: 确保您的电脑符合加入域的要求:确保您的操作系统为Windows 10专业版或企业版,家庭版不支持加入域。 检查网...

  • win10打开此电脑无响应如何解决

    如果在Windows 10中打开“此电脑”时遇到无响应的问题,可以尝试以下解决方法: 重启计算机:有时候简单的重启可以解决此类问题。 检查硬件问题:确保计算机的硬...