![](https://img-blog.csdnimg.cn/366563d159754cbc827b605b80a07a0d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
makfile
文章平均质量分 82
测试、整理makefile相关知识
lqonlylove
这个作者很懒,什么都没留下…
展开
-
makefile 学习笔记 十二:生成可执行文件的 makefile 模板
说明:本模板主要使用 gcc 编译 c 源码。1、目标1、指定目标名;2、指定相关编译参数;3、自动搜索源文件(目前未实现);4、过程文件存放在 build/temp 目录中,可执行文件存放在 build/bin 目录中;2、makefile 模板# 版本信息:2022.04.02 - lqonlylove-v1.0.0############################### 目标##############################TARGET := main原创 2022-04-05 20:05:39 · 760 阅读 · 0 评论 -
makefile 学习笔记 十一:Makefile 约定
详细内容见 《GNU make》 16 Makefile Conventions 章节。本章描述 GNU 程序编写 makefile 的约定。使用 Automake 将帮助您编写遵循这些约定的 Makefile。一、makefile的通用约定每个 Makefile 都应该包含这一行。SHELL = /bin/sh以避免在SHELL变量可能从环境继承的系统上出现问题(这从来都不是 GNU make 的问题)。因此,只使用特定Makefile中需要的后缀显式地设置后缀列表是一个好主意,如下所示:.原创 2022-04-05 20:01:39 · 1124 阅读 · 0 评论 -
makefile 学习笔记 十:使用 make 更新库文件
详细内容见 《GNU make》 11 Using make to Update Archive Files 章节。库文件是包含称为成员的命名子文件的文件;它们与程序ar一起维护,它们的主要用途是作为链接的子例程库。一、存档成员作为目标存档文件的单个成员可以在 make 中用作目标或先决条件。您可以在归档文件archive中指定名为member的成员,如下所示:archive(member)此构造只在目标和先决条件中可用,在配方中不可用!在配方中可能使用的大多数程序不支持此语法,并且不能直接.原创 2022-04-04 10:37:05 · 971 阅读 · 0 评论 -
makefile 学习笔记 九:makefile中使用隐式规则
详细内容见 《GNU make》 10 Using Implicit Rules 章节。某些重制目标文件的标准方法经常被使用。例如,创建目标文件的一种习惯方法是使用 C 编译器 cc 从 C 源文件中获取目标文件。隐式规则告诉 A 如何使用习惯技巧,这样当你想要使用它们时,就不必详细地指定它们。例如,有一个用于C编译的隐式规则。文件名确定运行哪些隐式规则。例如,C编译通常接受 .c 文件并生成 .o 文件。因此,当 make 看到这个文件名结尾的组合时,它应用了 C 编译的隐式规则。一系列隐式规则.原创 2022-04-03 09:48:18 · 1317 阅读 · 0 评论 -
makefile 学习笔记 八:如何运行 make
详细内容见 《GNU make》 9 How to Run make 章节。说明如何重新编译程序的 makefile 可以通过多种方式使用。最简单的用法是重新编译所有过期的文件。通常,编写 makefile 时,如果您运行 make 而不带任何参数,它就会这样做。但是您可能只想更新其中的一些文件;您可能需要使用不同的编译器或不同的编译器选项;您可能只想知道哪些文件过期了,而不需要更改它们。当你运行 make 时,通过给出参数,你可以做这些事情,也可以做很多其他事情。make 的退出状态始终是以下.原创 2022-04-02 08:45:30 · 9899 阅读 · 0 评论 -
makefile 学习笔记 七:makefile 在规则中编写配方(命令)
详细内容见 《GNU make》 5 Writing Recipes in Rules 章节。规则的配方由一个或多个要执行的shell命令行组成,一次执行一个,按它们出现的顺序执行。通常,执行这些命令的结果是更新规则的目标。用户使用许多不同的 shell 程序,但是 makefile 中的配方总是由 /bin/sh 解释,除非 makefile 另有指定。一、配方语法makefile有一个不寻常的属性,即在一个文件中实际上有两种不同的语法。大多数 makefile 使用 make 语法。但是,配.原创 2022-04-01 09:59:25 · 1424 阅读 · 0 评论 -
makefile 学习笔记 六:makefile 写规则
详细内容见 《GNU make》 4 Writing Rules 章节。一个规则出现在 makefile 中,并说明何时以及如何重制某些文件,称为规则的目标(通常每个规则只有一个目标)。它列出了作为目标先决条件的其他文件,以及用于创建或更新目标的配方。规则的顺序并不重要,除了确定默认目标:make 要考虑的目标(如果未以其他方式指定目标)。默认目标是第一个 makefile 中的第一个规则的目标。如果第一个规则有多个目标,则只有第一个目标作为默认值。有两个例外:以句号开头的目标不是默认值,除非它包含.原创 2022-03-31 19:41:02 · 3539 阅读 · 1 评论 -
makefile 学习笔记 五:编写 makefile
详细内容将 《GNU make》 3 Writing Makefiles 章节。核心:告诉 make 如何重新编译系统的信息来自于读取名为 makefile 的数据库。一、makefile包含什么Makefile 包含五种内容:显式规则、隐式规则、变量定义、指令和注释。1、一个明确的规则说明何时以及如何重新制作一个或多个文件,称为规则的目标。它列出了目标所依赖的其他文件,称为目标的先决条件,并且还可以提供用于创建或更新目标的方法。2、规则说明何时以及如何根据名称重新制作一类文件。它描述了目标如.原创 2022-03-29 21:28:05 · 1050 阅读 · 0 评论 -
makefile 学习笔记 四:makefile 函数
详细内容见 《GNU make》 8 Functions for Transforming Text 章节。函数允许您在 makefile 中进行文本处理,以计算要操作的文件或配方中要使用的命令。函数调用中使用函数,在函数调用中,您可以提供函数的名称和一些文本(参数),以便函数进行操作。函数的处理结果在调用时被替换到 makefile 中,就像变量可能被替换一样。一、函数调用语法函数调用类似于变量引用。它可以出现在变量引用出现的任何地方,并且使用与变量引用相同的规则进行扩展。函数调用如下所示:$.原创 2022-03-29 21:15:56 · 2033 阅读 · 0 评论 -
makefile 学习笔记 三:makefile 语句
一、条件语句条件指令会导致根据变量的值服从或忽略 makefile 的一部分。条件可以将一个变量的值与另一个变量的值进行比较,或者将变量的值与常量字符串进行比较。条件控制 make 文件中实际"sees"的内容,因此它们不能用于在执行时控制配方。1、条件句示例下面的条件示例告诉 make,如果 CC 变量是 “gcc”,则使用一组不同的库,否则则使用另一组库。它的工作原理是控制两个配方行中的哪一个将用于该规则。结果是"CC=gcc"作为参数,不仅可以更改使用哪个编译器,还可以更改链接的库。libs_原创 2022-03-27 20:09:48 · 1083 阅读 · 0 评论 -
makefile 学习笔记 二:makefile变量
一、变量定义语法变量的名称 = 值列表变量的名称可以由大小写字母、阿拉伯数字和下划线构成。等号左右的空白符没有明确的要求,因为在执行 make 的时候多余的空白符会被自动的删除。至于值列表,既可以是零项,又可以是一项或者是多项。变量使用可以用 $( ) 或 ${ }二、变量赋值1、赋值符简单赋值 ( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效。递归赋值 ( = ) 赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响。条件赋值原创 2022-03-27 11:00:34 · 2009 阅读 · 2 评论 -
makefile 学习笔记 一:makefile 语法
详细内容见:https://www.gnu.org/software/make/一、简介make 程序会自动确定大型程序的哪些部分需要重新编译,并发出命令以重新编译它们。事实上,make 并不局限于程序。您可以使用它来描述任何任务,在这些任务中,每当其他文件更改时,某些文件必须从其他文件自动更新。若要准备使用 make,必须编写一个名为 makefile 的文件,该文件描述程序中文件之间的关系,并提供用于更新每个文件的命令。二、编译器使用概述本教程使用 gcc 进行测试。gcc 使用例程如下:.原创 2022-03-23 21:26:02 · 709 阅读 · 0 评论