环境
- 操作系统:win10
- 编译器: mingw32(需要安装make)
参考链接:【传送门】
目标:实现多文件的编译运行与调试
本文使用c写一个求和函数作为例子。首先新建一个文件夹,以英文命名,在文件夹中创建Debug和Release两个子文件夹
再创建多个c文件。
1. my.h头文件
#ifndef _MY_H
#define _MY_H
int sum(int m, int n);
#endif
2. my.c文件,函数实现
#include"my.h"
int sum(int m, int n) {
int i, sum = 0;
for (i = m; i <= n; i++) {
sum += i;
}
return sum;
}
2. main.c文件,主函数
#include <stdio.h>
#include "my.h"
int main()
{
printf("%d\n", sum(1, 1000));
return 0;
}
我们知道,在visual studio里面,这样写后,直接编译运行即可,但是vscode不行,需要配置很多东西,下面具体讲解如何通过make命令和Makefile文件来编译多文件。这种操作是linux下常见的环节,所以还是有必要学习的。
安装make
在linux下make已经有了,但是Windows下需要安装。因为我们使用的是MinGW编译器,里面包含make,但是需要下载,下载教程见【传送门】
1. Make简介:
工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,Make将只编译改动的代码文件,而不用完全编译。
Makefile文件一般和项目的其他源文件放在同一个目录下。在机器上可以同时存在许多不同的makefile文件,如果一个大项目,可以用多个不同的makefile文件来分别管理项目的不同部分。
Make命令和makefile文件的结合提供了有一个在项目管理领域十分强大的工具,不仅可以用于控制源代码的编译,而且还可以用于手册也的编写以及将应用程序安装到目标目录。
2. 参数使用
、Make程序中有许多选项,其中最常用的3个选项为:
1、-k:作用是在让make命令在发现错误时仍然就执行,而不是在检测到第一个错误时就停止,所以可是使用这个选项在一次操作中发下所有未编译成功的源文件
2、-n:作用是让make命令输出将要执行的操作步骤,而不是真正执行这些操作
3、-f :作用是告诉make将文件名为filename的我文件作为makefile文件。如果未使用这个选项,标准版的make命令将优先在当前命令下查找名称为makefile的文件,如果不存在名称makefile的文件,则开始查找名为Makefile的文件。
编写makefile文件
在我们上面求和的例子中,我们有三个源文件:main.c, my.c, my.h
,这三个文件的Makefile文件编写如下:
main:main.o my.o
gcc main.o my.o -o main
main.o:main.c
gcc -c main.c
my.o:my.c
gcc -c my.c
.PHONY:clean
#linux 下用 rm -rf *.o main
clean:
@echo "=======clean project========="
del *.o
@echo "=======clean completed========="
注
:
clean下的代码,需使用make clean才可调用
-g -c -o意义:
-g:为调试使用
-c:仅编译(Compile),不连接(Make)
-o:输出文件名
编译运行
在当前工作路径打开cmd,或者vscode下的powershell,在里面输入make
,此时,就会按照Makefile文件进行编译。
上图分别展示了编译,运行和删除操作,这样,对于使用vscode进行多文件编译运行也是轻松解决了。