相关推荐
-
跟我一起写 Makefile 作者:陈皓 整理:祝冬华
跟我一起写 Makefile 作者:陈皓 整理:祝冬华 来源网络,希望能与大家分享这份学习资料,资源分数也设置了最低值,如有侵权,请联系我删除文件。 第一部分、概述 (6) 第二部分、关于程序的编译和链接 (6) 第三部分、Makefile 介绍 (7) 一、Makefile的规则 (7) 二、一个示例 (8) 三、make是如何工作的 (9) 四、makefile中使用变量 (10) 五、让make自动推导 (11) 六、另类风格的makefile (12) 七、清空目标文件的规则 (13) 第四部分、Makefile 总述 (13) 一、Makefile里有什么? (13) 1、显式规则。 (14) 2、隐晦规则。 (14) 3、变量的定义。 (14) 4、文件指示。 (14) 5、注释。 (14) 二、Makefile的文件名 (15) 三、引用其它的Makefile (15) 四、环境变量 MAKEFILES (16) 五、make的工作方式 (16) 第五部分、书写规则 (17) 一、规则举例 (17) 二、规则的语法 (17) 三、在规则中使用通配符 (18) 四、文件搜寻 (19) 五、伪目标 (20) 六、多目标 (22) 七、静态模式 (22) 八、自动生成依赖性 (24) 第六部分书写命令 (25) 一、显示命令 (26) 二、命令执行 (26) 三、命令出错 (27) 四、嵌套执行make (28) 五、定义命令包 (30) 第七部分使用变量 (30) 一、变量的基础 (31) 二、变量中的变量 (32) 三、变量高级用法 (34) 四、追加变量值 (37) 五、override 指示符 (37) 六、多行变量 (38) 八、目标变量 (39) 九、模式变量 (40) 第八部分使用条件判断 (40) 一、示例 (40) 二、语法 (42) 第九部分使用函数 (43) 一、函数的调用语法 (44) 二、字符串处理函数 (44) 1、subst (44) 2、patsubst (45) 3、strip (45) 4、findstring (46) 5、filter (46) 6、filter-out (46) 7、sort (47) 8、word (47) 9、wordlist (47) 10、words (47) 11、firstword (48) 12、字符串函数实例 (48) 三、文件名操作函数 (48) 1、dir (48) 2、notdir (48) 3、suffix (49) 4、basename (49) 5、addsuffix (49) 6、addprefix (49) 7、join (50) 四、foreach 函数 (50) 五、if 函数 (50) 六、call函数 (51) 七、origin函数 (51) “undefined” (52) “default” (52) “file” (52) “command line” (52) “override” (52) “automatic” (52) 八、shell函数 (53) 九、控制make的函数 (53) 1、error (53) 2、warning (54) 第十部分 make 的运行 (54) 二、指定Makefile (54) 三、指定目标 (55) “all” (56) “clean” (56) “install” (56) “print” (56) “tar” (56) “dist” (56) “TAGS” (56) “check”和“test” (56) 四、检查规则 (57) 五、make的参数 (57) 第十一部分隐含规则 (61) 一、使用隐含规则 (61) 二、隐含规则一览 (62) 1、编译C程序的隐含规则 (63) 2、编译C++程序的隐含规则 (63) 3、编译Pascal程序的隐含规则 (63) 4、编译Fortran/Ratfor程序的隐含规则 (63) 5、预处理Fortran/Ratfor程序的隐含规则 (63) 6、编译Modula-2程序的隐含规则 (63) 7、汇编和汇编预处理的隐含规则 (64) 8、链接Object文件的隐含规则 (64) 9、Yacc C程序时的隐含规则 (64) 10、Lex C程序时的隐含规则 (64) 11、Lex Ratfor程序时的隐含规则 (65) 12、从C程序、Yacc文件或Lex文件创建Lint库的隐含规则 (65) 三、隐含规则使用的变量 (65) 1、关于命令的变量。 (65) 2、关于命令参数的变量 (66) 四、隐含规则链 (67) 五、定义模式规则 (68) 1、模式规则介绍 (68) 2、模式
-
跟我一起写 Makefile(完整版)
文章目录作者介绍概述关于程序的编译和链接Makefile 介绍Makefile的规则一个示例make是如何工作的makefile中使用变量让make自动推导另类风格的makefile清空目标文件的规则Makefile 总述Makefile里有什么?显式规则隐晦规则变量的定义文件指示注释Makefile的文件名引用其它的Makefile环境变量 MAKEFILESmake的工作方式书写规则规则举例规...
-
跟我一起写 Makefile -- 陈皓
跟我一起写 Makefile(一) 概述 关于程序的编译和链接 Makefile 介绍 一、Makefile的规则 二、一个示例 跟我一起写 Makefile(二) 三、make是如何工作的 四、makefile中使用变量 五、让make自动推导 六、另类风格的makefile 七、清空目标文件的规则 跟我一起写 Makefile(三) Makefile 总述 一、Makefile里有什么? 二、Makefile的文件名 三、引用其它的Makefile 四、环境变量 MAKEFILES 五、mak
-
makefile中make -C
如果你的项目有复杂的文件夹结构,并且每个子目录都有自己的Makefile,你可以从项目的根目录调用`make -C`来进入特定的子目录并构建它,而不需要先手动cd到那个目录。在这个例子中,当你运行`make`时,它会首先切换到`lib`目录,然后在那里执行构建命令。在一个主Makefile中,可以使用`make -C`来调用不同子模块或库的构建过程,从而实现整个项目的统一构建。这将会设置环境变量`VAR`为`value`,并且这个设置只在`lib`目录下的构建过程中有效。如果省略,则使用默认目标。
-
跟我一起写Makefile(工程笔记版)
实操如下
-
Makefile文件里的=、:=、+=区别
‘=’定义的叫递归展开式变量,用它给某个变量赋值,后面的表达式不会在定义时就展开,而是在make程序执行到他的相关操作的时候才展开——即用的时候才生效 ‘:=’定义的叫直接展开式变量,赋值时将后面表达式的值马上展开传递给变量——即立即生效。 +=,-=这种是用来对变量进行追加定义的操作符,在原有的定义基础上加上或减去某个定义,比如去掉某个对象.o文件。 下面举个例子说明 makefil...
-
Makefile 教程及详细示例解析(跟我一起写 Makefile)
在Makefile中,自动化变量是一组特殊的变量,它们在执行规则时会自动被设置为相应的值。这些自动化变量可以帮助我们在规则中引用与当前规则相关的文件名、目录名等信息。以下是常用的自动化变量:- $@:代表当前规则的目标文件名。- $
-
makefile中“=”与“:=”的区别
先看下面的Makefile: #exampleB := $(A)A = laterall: @echo $(B) 执行make命令,我们发现什么都没输出,我们将第3行的:=换成=。 #exampleB = $(A)A = laterall: @echo $(B) 执行make,输出later。 分析:B :=$(A)时,它只会到这句语句之前去
-
[转]Makefile的编写
本文转自http://blog.csdn.net/ugg/archive/2007/05/23/1622555.aspx 陈皓 概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这
-
Makefile从入门到上手
makefile 关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能、模块分别放在若干个目录中,makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile 就像一个 Shell 脚本一样,其中也可以执行操作系统的命令。本文记录了 Makefile 的使用。
-
makefile := 与 = 的区别
一、简述 1、"="赋值,这种形式是以递归的形式展开变量,及被赋值的变量只有在被引用(使用)时,才会展开,及延迟展开(不常用) 2、":="赋值,这种形式是直接展开式赋值。 二、举例 例子1: foo = $(bar) bar = $(ugh) ugh = Huh? all:;echo $(foo) 例子来源于GnuMake 上述例子执行结果为(其中all:;echo $(foo)...
-
makefile
值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Uni...
-
《跟我一起学makefile》学习笔记(三)
学习记录(对应文档的p21-p30) 伪目标一般没有依赖的文件,但也可以指定。 需要生成多个可执行文件 all : prog1 prog2 prog3 .PHONY : all 六、多目标 自动化变量$@ 例子: bigoutput littleoutput : text.g generate text.g -$(subst output,,$@) > $@ ...
-
跟我一起写Makefile【三】
六、多目标 Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。
-
通俗易懂的Makefile教程(三)
通俗易懂的Makefile教程(三) 一、Makefile里有什么? Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。 ......
-
makefile 自动编译同一个目录下的所有文件
SOURCE = $(wildcard *.c) OBJS = $(patsubst %.c,%.o,$(SOURCE)) CROSS_COMPILE = arm-linux- CXX = gcc CFLAGS += --static CLFAGS += -Wall LDFLAGS += -lm all:bts bts:$(OBJS) $(CROSS_COMPILE)$(CXX) -
-
Makefile详解 --- 从入门到精通 (make、cmake、gmake、scons、ninja)
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。
-
Makefile系列之一 : 书写规则
1. 规则 target : prerequisites command 2. example excute 为最终生成的可执行文件。 可以通过命令 make clean来删除所有编译时产生的中间文件。 excute : main.o a.o b.o c.o d.o cc -o excute main.o a.o b.o c.o d.o ...