vscode makefile编译方法实例

-c出来.o 使用-o出来.bin NB二人组走天下,目标 : 依赖,下一行tab 加命令
感觉时比较块上手的教程,
手写AI
c语言中文网的makefile
c语言中文网的就是按部就班,比较机械,可以做查询使用

静态和动态链接库(linux-share)区别,载入内存时机,静态随程序链接时拷贝过来,库都是二进制版本

c语言中文网动态库静态库概念
静态链接库和动态链接库的作用时机不同,静态链接库会在程序载入内存之前完成所有的链接操作,而动态链接库是在程序载入内存后再进行链接操作。

文章目录

  • 静态和动态链接库(linux-share)区别,载入内存时机,静态随程序链接时拷贝过来,库都是二进制版本
  • 2 makefile基础命令:赋值、取变量$()
  • 每次都写目标和依赖???
  • 3标准工程代码makefile c++
  • makefile 多级目录检索问题,取值和配合shell命令 把所有cpp文件生成对应的.o文件复制到objs文件中
  • makefile通配定义目标:依赖 cpp->o>bin
  • makefile生成所有cpp的编译.o文件, 接下来链接所有o文件生成二进制bin文件
  • 完成makefile实例
  • ####### 基于makefile实现的完成功能项目

vscode makefile编译方法实例_第1张图片

2 makefile基础命令:赋值、取变量$()

  1. 变量赋值有4种方式var = 123, var := 123, var ?= 123, var += 123。其中var := 123常用,var += 123常用
  2. 取变量值有两种, ( v a r ) , (var), (var){var}。小括号大括号均可以
  3. 数据类型只有字符串和字符串数组,空格隔开表示多个元素
  4. $(function arguments)是调用make内置函数的方法,具体可以参考:http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions有函数大全。但是常用的其实只有少数两个即可
  5. 依赖关系定义中,如果代码修改时间比生成的更新/生成不存在时,command会执行。否则只会打印main.o is up to date。这是makefile解决的核心问题
  6. 依赖关系可以链式的定义,即b依赖a,c依赖b,而make会自动链式的查找并根据时间执行command
  7. command是shell指令,可以使用$(var)来将变量用到其中。前面加@表示执行执行时不打印原指令内容。否则默认打印指令后再执行指令
  8. make不写具体生成名称,则会选择依赖关系中的第一项生成

每次都写目标和依赖???

通常,我们的cpp会比较多,总不会每次都写全a.o : a.cpp吧?
通常,我们的cpp会多级目录,总不会每个目录都写Makefile吧?
我不希望生成的a.o和a.cpp在一起,我想统一放到其他位置可以吗?

3标准工程代码makefile c++

vscode makefile编译方法实例_第2张图片
在这里插入图片描述

makefile 多级目录检索问题,取值和配合shell命令 把所有cpp文件生成对应的.o文件复制到objs文件中

vscode makefile编译方法实例_第3张图片

makefile通配定义目标:依赖 cpp->o>bin

vscode makefile编译方法实例_第4张图片
报错原因
在这里插入图片描述
解决方法 添加 $(dir $@)
vscode makefile编译方法实例_第5张图片

makefile生成所有cpp的编译.o文件, 接下来链接所有o文件生成二进制bin文件

vscode makefile编译方法实例_第6张图片

完成makefile实例

vscode makefile编译方法实例_第7张图片
在这里插入图片描述
vscode makefile编译方法实例_第8张图片
xiugai

修改子文件的函数,但是不用编译全部,这里没有对main再次编译,节省时间,这就是我们想要 的
vscode makefile编译方法实例_第9张图片

####### 基于makefile实现的完成功能项目

http://www.zifuture.com:8090/upload/2021/08/makefile%E6%95%99%E7%A8%8B%E4%B9%8Bmake7-dc38157945fe471391a7b75614a63719.tar.gz

你可能感兴趣的:(学习工具及问题记录,vscode,c++)