使用linux的makefile编译两个c文件一个h文件
时间: 2024-05-16 16:18:09 浏览: 16
假设你的项目目录结构如下:
```
project/
|--src/
| |--main.c
| |--helper.c
|--include/
| |--helper.h
|--Makefile
```
则可以编写如下的 Makefile 文件:
```makefile
CC = gcc
CFLAGS = -Wall -Iinclude
SRCDIR = src
OBJDIR = obj
SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
EXECUTABLE = myapp
all: $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(CFLAGS) $^ -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJDIR)/*.o $(EXECUTABLE)
```
其中,`CC` 定义了编译器,`CFLAGS` 定义了编译标志,`SRCDIR` 定义了源文件目录,`OBJDIR` 定义了目标文件目录,`SOURCES` 定义了所有的源文件,`OBJECTS` 定义了所有的目标文件,`EXECUTABLE` 定义了最终生成的可执行文件名。
`all` 是默认目标,它依赖于 `$(EXECUTABLE)`,即最终生成的可执行文件。`$(EXECUTABLE)` 依赖于 `$(OBJECTS)`,即所有的目标文件。`$(OBJECTS)` 通过模式规则生成,它依赖于对应的源文件。`clean` 是清理目标,它删除所有的目标文件和可执行文件。
使用 `make` 命令即可编译项目:
```shell
$ make
```
编译完成后,会在当前目录生成一个名为 `myapp` 的可执行文件。
相关推荐
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)