GCC学习 (三)如何编写makefile

更多惊喜,请google“跟我一起写Makefile”

本文是该makefile教程的简明版

  • makefile 基本格式 :

--------------------------

要生成的文件:依赖的文件

实际命令

--------------------------

执行make时,实际上生成的是第一个文件中要生成的文件,但是第一个要生成的文件,有依赖文件,所以就会继续寻找下一个要生成的文件

make命令是一个递归的过程,本身不包含gcc的过程

  • 命令

如果冒号:后面没有依赖,则这是一个命令,使用make + 命令来执行

-----------

命令:

实际命令

-----------

该命令常见且只见于 clean

make的递归性质作用是为了方便多次编译,因为如果递归到一个文件,该文件已经修改过了,或者该文件不存在,则执行命令,否则不执行命令,节省花在gcc上时间

  • 变量声明

-------

Name = thing

Name := thing

-------

使用变量时,用$(Name),变量不是全部大写,表示只在该文件内有效

  • 隐晦规则

一般,abc.o文件肯定依赖abc.c,所以在写基本格式中,依赖就不用写某c文件了,这就是隐晦规则

  • 包含

和c一样,使用include <a.mk>包含

  • 这样,就可以明白makefile的工作过程(伪)了

1.将所有include展开

2.将所有变量初始化

3.将所有隐晦规则展开

4.将所有依赖关系展开

5.根据依赖关系,找到变动过得文件,重新生成

6.根据生成的文件,编译和链接

实际过程中,makefile并不马上展开,而是拖延到生成文件的时候再展开,当然是为了节省时间

  • 通配符

通配符有三种

1. 波浪线~,等效$HOME

2. 星号*,指的是任意匹配符

3. 问号?,任意 至少一个

  • 文件搜索

缺省路径 VPATH , 用法:

----

VPATH = 路径1:路径2:路径3

----

依赖文件的目录找不到,尝试到这个目录下找

待更新

时间: 2024-11-10 15:41:26

GCC学习 (三)如何编写makefile的相关文章

Linux 程序设计学习笔记----动手编写makefile文件

Befroe Beginning. 之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 现在开始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合. 希望可以一起学习进步. 引入 首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_p

【Mac + Appium + Java1.8学习(三)】之IOS自动化环境安装配置以及简单测试用例编写(模拟器、真机)

前提条件: =========================================== 1.Xcode版本为Xcode10及以上2.Appium版本必须为1.9及以上,因为Xcode为10.0 3.appium-desktop4.安装所需依赖库,包括: a.Homebrew b.Git c.node (brew install node) d.npm (brew install npm)e.carthage (brew install carthage)f.libimobiledev

Python编程入门-第三章 编写程序 -学习笔记

第三章 编写程序 1.编辑源程序.运行程序 可通过IDLE中File>New File新建一个文本以编辑源程序,编辑完成可通过Run>Run Module(或者F5快捷键)来运行程序.Python源文件都以.py格式存储. 2.从命令行运行程序 除了上述利用IDLE的集成功能运行程序的方式外,当然也可以通过命令行运行程序,命令格式为:python ‘源文件名称.py’. 3.编译源代码 当运行py格式文件时,Python会自动创建相应的.pyc文件,该文件包含编译后的代码即目标代码,目标代码基

[转]Linux学习笔记——例说makefile 头文件查找路径

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile分为以下几个部分,更多内容请参考[例说makefile索引博文] 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [

【学习记录】关于makefile而进行的互联网学习技巧练习及学习笔记和学习心得记录(vs2010)

我也不知道作为一个完全的windows平台下的不怎么专业的软件工程学生,看到<Accelerated C++>的源代码,第一反应是:哦!我应该用make生成工程文件.然后我愉快的用AOL开始搜索相关资料. 然并卵!我一定是被什么奇怪的生物附身了.我应该直接用vs创建项目->导入文件.然后……ctrl+F5.多么完美. 可是……以下: [教程]来自于云风大大的blog(云风的 BLOG) IDE 不是程序员的唯一选择(一) 以及后面的(二)(三)(四) 以及大大写了一篇半,只为了说明用cl

Linux学习笔记——例说makefile 多个文件

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

Linux学习笔记——例说makefile 头文件查找路径

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.一个较为复杂的例子 [代码仓库]--makefile-example 代码仓库位于bitbucket,可借助Tortoise

如何编写makefile文件

最近一直在学习makefile是如何编写的. 当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件. makefile是一种特殊的文件格式,他将会帮你自动管理你的项目,很强大.它是这样工作的: 1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件.    2.如果找到,它会找文件中的第一个目标文件(ta

Linux下编写 makefile 详细教程

原文地址:https://www.cnblogs.com/mfryf/p/3305778.html 还有一篇也不错:http://wiki.ubuntu.org.cn/跟我一起写Makefile:MakeFile介绍 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>的mak

简单编写Makefile

相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次.你也可以自己写makefile,让别人对你头来羡慕的目光. 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正.简单的说,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在m