![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
makefile
xinisay
为自己爱的人,为爱自己的人,为美丽的生命点个赞
展开
-
从头开始写项目Makefile(五):嵌套执行
在大一些的项目里面,所有源代码不会只放在同一个目录,一般各个功能模块的源代码都是分开的,各自放在各自目录下,并且头文件和.c源文件也会有各自的目录,这样便于项目代码的维护。这样我们可以在每个功能模块目录下都写一个Makefile,各自Makefile处理各自功能的编译链接工作,这样我们就不必把所有功能的编译链接都放在同一个Makefile里面,这可使得我们的Makefile变得更加简洁,并且编译的转载 2015-07-30 11:03:48 · 296 阅读 · 0 评论 -
跟我一起写Makefile
来自wiki.ubuntu.org.cn的《跟我一起写Makefile》,描述很专业到位。原创 2015-07-30 11:31:00 · 295 阅读 · 0 评论 -
从头开始写项目Makefile(七):统一目标输出目
上一节我们把规则单独提取出来,方便了Makefile的维护,每个模块只需要给出关于自己的一些变量,然后再使用统一的规则Makefile。这一节我们继续改进我们的Makefile,到目前为止我们的Makefile编译链接输出的目标都在源文件同目录下或模块Makefile同一目录下,当一个项目大了之后,这样会显得很乱,寻找编译输出的文件也比较困难。既然Makefile本身就是按照我们的的规则来编译链接转载 2015-07-30 11:08:36 · 395 阅读 · 0 评论 -
从头开始写项目Makefile(二):隐含规则自动推导 .
上一节的Makefile勉强可用,但还写的比较繁琐,不够简洁。对每一个.c源文件,都需要写一个生成其对应的.o目标文件的规则,如果有几百个或上千个源文件,都手动来写,还不是很麻烦,这也不够自动化啊。 这样,我们把生成.o目标文件的规则全部删除掉,就是这样一个Makefile文件: [html] view plaincopyprint? target_bin : mai转载 2015-07-30 10:45:47 · 301 阅读 · 0 评论 -
从头开始写项目Makefile(十):make内嵌函数及make命令显示 .
这一节我们讲一下make的函数,在之前的章节已经讲到了几个函数:wildcard、patsubst、notdir、shell等。一般函数的调用格式如下: $(funcname arguments) 或 $(funcname arguments) 其中funcname是需要调用函数的函数名称,应该是make内嵌函数;arguments是函数参数,参数和函数名之间使用空格分割,如果存在多个参数转载 2015-07-30 11:13:16 · 282 阅读 · 0 评论 -
从头开始写项目Makefile(六):参数传递、条件判断、include .
在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile。比如我们在顶层Makefile里面定义的打开调试信息变量DEBUG_SYMBOLS,我们希望在进入子目录执行子Makefile时该变量仍然有效,这是需要将该变量传递给子Makefile,那怎么传递呢?这里有两种方法: 1. 在上层Makefile中使用”export”关键字对需要传递的变量进行声明。比如:转载 2015-07-30 11:05:40 · 541 阅读 · 0 评论 -
从头开始写项目Makefile(四):伪目标 .
一般情况下,Makefile都会有一个clean目标,用于清除编译过程中产生的二进制文件。我们在第一节的Makefile就用到了这个 clean目标,该目标没有任何依赖文件,并且该目标对应的命令执行后不会生产clean文件。 像这种特点目标,它的规则所定义的命令不是去创建文件,而仅仅通过make指定目标来执行一些特定系统命令或其依赖为目标的规则(如all),称为伪目标。 一个Makefile一转载 2015-07-30 11:01:55 · 362 阅读 · 0 评论 -
从头开始写项目Makefile(八):模式规则 .
上一节讲到目录创建成功,目标文件没有生产到对应目录下,这里我们先给目标文件加上对应目录,这样的话产生对应的目标文件会直接生成到对应目录。我们先给库文件目标和可执行文件目标加上路径,如下:[html] view plaincopyprint?01.lib : $(OBJDIR) $(LIBDIR)/$(SRC_LIB) 02. 03.bin : $(OBJDIR) $(BINDIR)/$(SRC_B转载 2015-07-30 11:09:58 · 224 阅读 · 0 评论 -
从头开始写项目Makefile(三):变量的使用
仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处: [plain] view plaincopyprint? target_bin : main.o debug.o ipc.o timer.o tools.o >---gcc -o target_bin main.o debug.o ipc.o timer.o tools.o target_b转载 2015-07-30 10:47:52 · 372 阅读 · 0 评论 -
从头开始写项目Makefile(一):基本规则
一般一个稍大的linux项目会有很多个源文件组成,最终的可执行程序也是由这许多个源文件编译链接而成的。编译是把一个.c或.cpp文件编译成中间代码.o文件,链接是就使用这些中间代码文件生成可执行文件。比如在当前项目目录下有如下源文件: [html] view plaincopyprint? # ls common.h debug.c debug.h ipc.c转载 2015-07-30 10:38:32 · 270 阅读 · 0 评论