makefile如何编译文件夹下的文件
在Makefile中,可以使用通配符(wildcard)来获取文件夹下所有文件的列表,然后使用规则来编译这些文件。
以下是一个示例的Makefile,用于编译文件夹下的所有.c文件:
```makefile
# 获取文件夹下所有的.c文件
class="lazy" data-srcS := $(wildcard *.c)
# 生成对应的目标文件列表
OBJS := $(class="lazy" data-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文件,并将它们保存到变量`class="lazy" data-srcS`中。然后,通过将`.c`替换为`.o`,生成对应的目标文件列表`OBJS`。
接下来,定义了两个规则。第一个规则`$(TARGET): $(OBJS)`表示生成目标文件`$(TARGET)`的依赖是所有的目标文件列表`$(OBJS)`。在规则的命令中,使用`$^`表示所有的依赖文件,`$@`表示目标文件,通过gcc命令将目标文件链接成可执行程序。
第二个规则`%.o: %.c`表示根据.c文件生成对应的目标文件。在规则的命令中,使用`$<`表示第一个依赖文件,通过gcc命令将.c文件编译成目标文件。
最后,定义了一个伪目标`.PHONY: clean`用于清理编译生成的目标文件和可执行程序。
要编译文件夹下的所有文件,只需在命令行中输入`make`即可。如果需要清理编译生成的文件,可以输入`make clean`。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341