Makefile 为每个源文件生成一个二进制文件

Posted

技术标签:

【中文标题】Makefile 为每个源文件生成一个二进制文件【英文标题】:Makefile to generate a binary file for each source file 【发布时间】:2022-01-14 19:59:44 【问题描述】:

我的项目中有以下结构。

/ src/ bin/ 生成文件

在 src 目录下会有多个 src 文件(每个都有一个 main 函数)。我需要编写makefile,这样当我运行时 make program1 它应该在 src 文件夹中搜索 program1.c 并将可执行文件编译为 bin 文件夹中的 program1*。

我遇到了这个问题How can Makefile use separate directories for source code and binaries? 但是,似乎我需要手动将所有程序名称输入到 PROG 变量中。 我只需要使用 make 提供二进制名称,它应该为相应的 src 文件进行编译?

【问题讨论】:

【参考方案1】:

好的,在对我的 Makefile 进行了一些实验之后。我终于找到了解决问题的方法。

当前构建系统

   CC = gcc
   CFLAGS = -g -Wall
   SRC = ./src/
   BIN = ./bin/

   %: $(SRC)%.c
       $(CC) $(CFLAGS) $< -o $(BIN)$@
   
   .PHONY: clean
   
   clean: 
       rm $(BIN)* 

【讨论】:

以上是关于Makefile 为每个源文件生成一个二进制文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用CMAKE生成makefile文件

makefile 多源文件编译规则一步到位

为一个工程创建Makefile

生成一个 Makefile,使用 Automake 一步编译和链接所有源文件

使用 Makefile、源代码生成器并使用 gcc 生成依赖项

为静态构建编辑 Makefile