vscode makefile编译方法实例

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

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

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


在这里插入图片描述

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++

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
报错原因
在这里插入图片描述
解决方法 添加 $(dir $@)
在这里插入图片描述

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

在这里插入图片描述

完成makefile实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
xiugai

修改子文件的函数,但是不用编译全部,这里没有对main再次编译,节省时间,这就是我们想要 的
在这里插入图片描述

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

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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用VSCode编写Makefile时,你可以按照以下步骤进行操作: 1. 在VSCode中创建一个新的文件,并将其命名为"Makefile"。 2. 在Makefile中,你可以使用-g选项来输出调试信息,以便进行在线调试。这可以通过在Makefile中添加"-g"来实现。\[1\] 3. 如果你的项目中有多个cpp文件,你可以使用通配符来简化Makefile的编写。例如,使用"%.o: %.cpp"来表示所有的cpp文件都会生成对应的目标文件。\[2\] 4. 如果你希望将生成的目标文件放在其他位置,你可以在Makefile中指定目标文件的路径。例如,使用"obj/%.o"来表示将目标文件统一放在"obj"目录下。\[2\] 5. Makefile可以自动根据源文件的更新情况来判断是否需要重新编译。这样可以避免每次都重新编译所有文件。你可以使用make命令来执行Makefile,并根据需要进行编译。\[3\] 希望以上信息对你有所帮助! #### 引用[.reference_title] - *1* [vscode 使用makefile 在线调试运行C/C++程序的方法](https://blog.csdn.net/fhqlongteng/article/details/127388105)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vscode makefile编译方法实例](https://blog.csdn.net/weixin_44523062/article/details/120284524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Tomato学习笔记-Vscode配置Makefile(使用task.jason和launch.jason)](https://blog.csdn.net/GitTomato/article/details/123170550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值