makefile的使用方法(简单视频教程以及详细文字教程)
生活随笔
收集整理的这篇文章主要介绍了
makefile的使用方法(简单视频教程以及详细文字教程)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 1、makefile详细文字教程
- 2、makefile简单教程(B站视频教程)
- makefile基本语法格式:
- 简单示例(单文件)makefile写法
- 带包含关系的多文件makefile写法(包含1个文件)
- 在需要发布源码时,编译后删除可执行文件和.o链接文件的makefile指令(make clean)
- 带包含关系的多文件makefile写法(包含>=2个文件)
- makefile指定编译器CC(名字自己定)
- 增加自定义参数
- 多个主函数编译生成多个可执行文件的makefile写法(all指令)
1、makefile详细文字教程
Linux makefile 教程 非常详细,且易懂
原文:跟我一起写 Makefile(有什么不懂可以跳转到原文评论区答疑解惑)
2、makefile简单教程(B站视频教程)
参考教程视频链接:教程:Makefile的写法
makefile基本语法格式:
简单示例(单文件)makefile写法
新建文件main.cpp
#include <iostream>using namespace std;int main(){cout << "success!" << endl;return 0; }新建文件makefile,跟.cpp文件放一起
main:main.cg++ main.c -o main终端运行
make结果:
带包含关系的多文件makefile写法(包含1个文件)
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main.c ├── makefile ├── tool.c └── tool.hmain.c
#include "tool.h" #include <stdio.h>int main(){int arr[] = {1,8,3,4,5};int m = find_max(arr,5);printf("max = %d\n",m);return 0; }tool.c
#include "tool.h"int find_max(int arr[], int n){int m = arr[0];int i;for(i=0; i<n; i++){if(arr[i] > m){m = arr[i];}}return m; }tool.h
#pragma onceextern int find_max(int arr[], int n);多文件时,写makefile一般从后往前写
makefile
main:main.c tool.ogcc main.c tool.o -o maintool.o:tool.cgcc -c tool.c编译:
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c tool.c gcc main.c tool.o -o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main ├── main.c ├── makefile ├── tool.c ├── tool.h └── tool.o.o是链接文件
在需要发布源码时,编译后删除可执行文件和.o链接文件的makefile指令(make clean)
在后面加上这一句:
clean:rm *.o mainmakefile
main:main.c tool.ogcc main.c tool.o -o maintool.o:tool.cgcc -c tool.cclean:rm *.o main这样在我们使用make指令编译后,再使用make clean指令,就能将生成的main和tool.o删除
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── main.c ├── makefile ├── tool.c └── tool.h0 directories, 4 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$带包含关系的多文件makefile写法(包含>=2个文件)
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── bar.c ├── bar.h ├── foo.c ├── foo.h ├── main.c └── makefile0 directories, 6 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$main.c
#include "foo.h" #include "bar.h" #include <stdio.h>int main(){int arr[] = {1,2,3,4,5};printf("min = %d\n", find_min(arr, 5));printf("max = %d\n", find_max(arr, 5)); return 0; }bar.c
#include "bar.h"int find_min(int arr[], int n){return 1; }foo.c
#include "foo.h"int find_max(int arr[], int n){return 10; }bar.h
int find_min(int arr[], int n);foo.h
int find_max(int arr[], int n);makefile
main:main.c bar.o foo.ogcc main.c bar.o foo.o -o mainbar.o:bar.cgcc -c bar.cfoo.o:foo.cgcc -c foo.cclean:rm *.o main运行结果:
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c bar.c gcc -c foo.c gcc main.c bar.o foo.o -o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$ ls bar.c bar.h bar.o foo.c foo.h foo.o main main.c makefile yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main yg@ubuntu:~/arnold_test/20210911_makefileTest2$makefile指定编译器CC(名字自己定)
makefile
CC = gccmain:main.c bar.o foo.o$(CC) main.c bar.o foo.o -o mainbar.o:bar.c$(CC) -c bar.cfoo.o:foo.c$(CC) -c foo.cclean:rm *.o main增加自定义参数
多个主函数编译生成多个可执行文件的makefile写法(all指令)
代码略
makefile
CC = gccall:main_min main_maxmain_min:main_min.c bar.o$(CC) main_min.c bar.o -o main_minmain_max:main_max.c foo.o$(CC) main_max.c foo.o -o main_maxbar.o:bar.c$(CC) -c bar.cfoo.o:foo.c$(CC) -c foo.cclean:rm *.o main_min main_max运行结果:
yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make gcc -c bar.c gcc main_min.c bar.o -o main_min gcc -c foo.c gcc main_max.c foo.o -o main_max yg@ubuntu:~/arnold_test/20210911_makefileTest2$ tree . ├── bar.c ├── bar.h ├── bar.o ├── foo.c ├── foo.h ├── foo.o ├── main_max ├── main_max.c ├── main_min ├── main_min.c └── makefile0 directories, 11 files yg@ubuntu:~/arnold_test/20210911_makefileTest2$ make clean rm *.o main_min main_max yg@ubuntu:~/arnold_test/20210911_makefileTest2$ ls bar.c bar.h foo.c foo.h main_max.c main_min.c makefile yg@ubuntu:~/arnold_test/20210911_makefileTest2$总结
以上是生活随笔为你收集整理的makefile的使用方法(简单视频教程以及详细文字教程)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: c/c++源文件为何要包含自己的头文件?
- 下一篇: 文本文件与二进制文件及编码关系