makefile学习笔记-makefile介绍(makefile的规则)

20180411 makefile学习笔记-makefile介绍(makefile的规则)



makefile的感性认识:
make命令执行时,需要一个makefile文件,以告诉make命令需要怎样的去编译和链接程序;
eg:工程中有8个C文件和3个头文件,我们要编写一个Makefile来告诉make命令如何编译和链接这几个文件,我们的规则是:
(1)若这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
(2)若这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
(3)若这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。


只要我们的Makefile写的够好,所有的这一切,我们只用一个make命令就可以完成。


一、makefile的规则


下面是makefile的粗略规则:


target...: prerequisites...
command 
...
...




target也就是目标文件,可以是Object File,也可以是执行文件还可以是一个标签(Label),对于标签这种特性,在后续的“伪代码”文章中会有叙述。


prerequisites就是,要生成的那个target所需要的文件或目标。


command也就是马克需要执行的命令(任意的Shell命令)。


这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生产规则定义在command中,说白一点就是:prerequisites中若有一个以上的文件比target文件新的话,command所定义的命令就会被执行。这就是Makefile的规则。也是Makefile中最核心的内容。

































































































































































































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。
在使用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、付费专栏及课程。

余额充值