3、 编写5个.c文件和4个.h文件4、 在该目录下编写Makefile文件并执行编译,生成可执行文件main。执行该文件显示为: test1…… test2…… test3…… test4…… Makefile包含make clean规则。执行make clean后删除所有新生成的文件
时间: 2024-01-19 12:03:48 浏览: 70
基于 C++构建 Qt 实现的 GDAL 与 PROJ4 的遥感图像处理软件课程设计
好的,以下是一个简单的例子:
我们假设有五个名为 test1.c、test2.c、test3.c、test4.c 和 main.c 的 C 文件,以及四个名为 test1.h、test2.h、test3.h 和 test4.h 的头文件。
test1.c 文件:
```c
#include <stdio.h>
#include "test1.h"
void printTest1(void) {
printf("This is test1\n");
}
```
test1.h 文件:
```c
#ifndef TEST1_H
#define TEST1_H
void printTest1(void);
#endif
```
test2.c 文件:
```c
#include <stdio.h>
#include "test2.h"
void printTest2(void) {
printf("This is test2\n");
}
```
test2.h 文件:
```c
#ifndef TEST2_H
#define TEST2_H
void printTest2(void);
#endif
```
test3.c 文件:
```c
#include <stdio.h>
#include "test3.h"
void printTest3(void) {
printf("This is test3\n");
}
```
test3.h 文件:
```c
#ifndef TEST3_H
#define TEST3_H
void printTest3(void);
#endif
```
test4.c 文件:
```c
#include <stdio.h>
#include "test4.h"
void printTest4(void) {
printf("This is test4\n");
}
```
test4.h 文件:
```c
#ifndef TEST4_H
#define TEST4_H
void printTest4(void);
#endif
```
main.c 文件:
```c
#include <stdio.h>
#include "test1.h"
#include "test2.h"
#include "test3.h"
#include "test4.h"
int main(void) {
printTest1();
printTest2();
printTest3();
printTest4();
return 0;
}
```
现在我们需要编写一个 Makefile 文件来编译这些文件。Makefile 文件内容如下:
```makefile
CC = gcc
CFLAGS = -Wall -Wextra -Wpedantic
SRCS = main.c test1.c test2.c test3.c test4.c
OBJS = $(SRCS:.c=.o)
HDRS = test1.h test2.h test3.h test4.h
.PHONY: clean
main: $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o main
%.o: %.c $(HDRS)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJS) main
```
在这个 Makefile 文件中,我们首先定义了编译器和编译选项。然后,我们定义了源文件、目标文件和头文件。下一步,我们定义了一个目标 main,它依赖于所有的目标文件。我们使用 $< 和 $@ 来表示第一个和最后一个依赖项。最后,我们定义了一个 clean 目标,用于删除所有的目标文件和可执行文件。
现在我们只需要在终端中运行 make 命令来编译这些文件并生成可执行文件 main。在终端中输入以下命令:
```bash
make
```
这将编译所有的文件并生成可执行文件 main。运行它,你将会看到输出 "This is test1"、"This is test2"、"This is test3" 和 "This is test4"。
如果你想要删除所有的目标文件和可执行文件,可以在终端中输入以下命令:
```bash
make clean
```
这将删除所有的目标文件和可执行文件。
希望这个例子对你有所帮助。
阅读全文