排序:
默认
按更新时间
按访问量

Makefile中几种赋值(= := ?= +=)

变量的引用方式:  ”$(变量名)“或者”¥{变量名}“  例如:  ${Objs}就是取变量Objs的值  注意:  当变量名为单字符是可以采用:“$a”的方式引用,多字符则不行Makefile中几种赋值(= := ?= +=)=  延时变量,只有被使用时才展开定义 := 立即变量,定义时的赋值...

2018-05-29 21:17:37

阅读数:41

评论数:0

Makefile中的wildcard用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表...

2018-05-29 20:47:05

阅读数:92

评论数:0

Makefile中的几个调试方法

1,使用info/warning/error增加调试信息方法1: $(info, "here add the debug info")           但是此不能打印出.mk的行号方法2: $(warning, "here add the ...

2018-05-29 20:18:16

阅读数:52

评论数:0

我所使用的一个通用的Makefile模板

话不多说,请看:我的项目有的目录结构有:dirls/ ├── include │ └── apue.h ├── lib │ ├── error.c │ ├── error.o │ └── Makefile ├── src │ ├── dirls.c │ ├── dirls....

2018-03-29 14:13:02

阅读数:55

评论数:0

Makefile所有内嵌函数

一、文本处理函数以下是GNU make内嵌的文本(字符串)处理函数。1       $(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。返回值:替换后的新字符串。示例:$(subst ee,EE,feet ...

2018-03-29 10:52:08

阅读数:93

评论数:0

Makefile---make内嵌函数及make命令显示 (九)

这一节我们讲一下make的函数,在之前的章节已经讲到了几个函数:wildcard、patsubst、notdir、shell等。一般函数的调用格式如下:123$(funcname arguments)或$(funcname arguments)其中funcname是需要调用函数的函数名称,应该是m...

2018-03-28 09:52:33

阅读数:68

评论数:0

makefile--目录搜索(八)

在一个较大的工程中,一般会将源代码和二进制文件(.o 文件和可执行文件)安排在不同的目录来进行区分管理。这种情况下,我们可以使用 make 提供的目录搜索依赖文件功能(在指定的若干个目录下自动搜索依赖文件)。在Makefile中,使用依赖文件的目录搜索功能。当工程的目录结构发生变化 后,就可以做到...

2018-03-27 17:15:20

阅读数:67

评论数:0

makefile--模式规则(七)

上一节讲到目录创建成功,目标文件没有生产到对应目录下,这里我们先给目标文件加上对应目录,这样的话产生对应的目标文件会直接生成到对应目录。我们先给库文件目标和可执行文件目标加上路径,如下:123456789101112131415161718lib : $(OBJDIR) $(LIBDIR)/$(S...

2018-03-27 17:13:25

阅读数:48

评论数:0

makefile--统一目标输出目录 (六)

上一节我们把规则单独提取出来,方便了Makefile的维护,每个模块只需要给出关于自己的一些变量,然后再使用统一的规则Makefile。这一节我 们继续改进我们的Makefile,到目前为止我们的Makefile编译链接输出的目标都在源文件同目录下或模块Makefile同一目录下,当一个项 目大了...

2018-03-27 17:12:32

阅读数:368

评论数:0

makefile--参数传递、条件判断、include (五)

在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile。比如我们在顶层Makefile里面定义的打开调试信息变量 DEBUG_SYMBOLS,我们希望在进入子目录执行子Makefile时该变量仍然有效,这是需要将该变量传递给子Makefile,那怎么传递呢? 这里有两种...

2018-03-27 17:11:46

阅读数:83

评论数:0

makefile--嵌套执行(四)

在大一些的项目里面,所有源代码不会只放在同一个目录,一般各个功能模块的源代码都是分开的,各自放在各自目录下,并且头文件和.c源文件也会有各 自的目录,这样便于项目代码的维护。这样我们可以在每个功能模块目录下都写一个Makefile,各自Makefile处理各自功能的编译链接工作,这样 我们就不必把...

2018-03-27 17:09:56

阅读数:45

评论数:0

Makefile--伪目标 (三)

一般情况下,Makefile都会有一个clean目标,用于清除编译过程中产生的二进制文件。我们在第一节的Makefile就用到了这个 clean目标,该目标没有任何依赖文件,并且该目标对应的命令执行后不会生产clean文件。像这种特点目标,它的规则所定义的命令不是去创建文件,而仅仅通过make指定...

2018-03-27 17:08:55

阅读数:43

评论数:0

makefile--变量的使用(二)

仔细研究我们的之前Makefile发现,我们还有改进的地方,就是此处:12target_bin : main.o debug.o ipc.o timer.o tools.o   >---gcc -o target_bin main.o debug.o ipc.o timer....

2018-03-27 17:07:54

阅读数:39

评论数:0

Makefile--隐含规则自动推dao(一)

上一节的Makefile勉强可用,但还写的比较繁琐,不够简洁。对每一个.c源文件,都需要写一个生成其对应的.o目标文件的规则,如果有几百个或上千个源文件,都手动来写,还不是很麻烦,这也不够自动化啊。这样,我们把生成.o目标文件的规则全部删除掉,就是这样一个Makefile文件:12345targe...

2018-03-27 17:06:02

阅读数:42

评论数:0

Makefile--基本规则(零)

一般一个稍大的linux项目会有很多个源文件组成,最终的可执行程序也是由这许多个源文件编译链接而成的。编译是把一个.c或.cpp文件编译成中间代码.o文件,链接是就使用这些中间代码文件生成可执行文件。比如在当前项目目录下有如下源文件:123# ls common.h  debug.c  debug...

2018-03-27 17:03:49

阅读数:67

评论数:0

Makefile 使用总结

1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用...

2018-03-27 14:29:28

阅读数:79

评论数:0

函数库一般分为静态库和动态库两种。

静态库:是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为”.a”。动态库:与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为”.s...

2018-03-26 20:52:12

阅读数:77

评论数:0

gcc/g++ 实战之编译的四个过程

gcc和g++分别是GNU(一个开源组织)的c&c++编译器对于.c后缀的文件,gcc把它当做是C程序,g++当做是C++程序;对于.cpp后缀的文件,gcc和g++都会当做c++程序。gcc可以根据后缀名为.c或.cpp分别按c程序和c++程序来编译,但是g++无论是.c...

2018-03-26 20:42:12

阅读数:39

评论数:0

Makefile 静态模式——$(objects): %.o: %.c

静态模式最近看Makefile,正常依赖没什么问题,但是遇到一些特殊的符号就有点不明白了,例如:$(objects): %.o: %.c、$<之类的。最近看了篇文章写的不错,贴出来供大家分享。静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们...

2018-03-26 20:26:17

阅读数:747

评论数:0

Makefile的简单编写

当我们的工程越来越大的以后,每次都使用命令编译显得非常的麻烦.所以我们需要一个自动化编译的工具来帮助我们编译.在我们使用源码安装软件的时候都会有make,make install等操作,这个就是使用Makefile来进行自动化编译的工作的.Makefile也是一个脚本文件和shell脚本非常的相似...

2018-03-26 15:34:08

阅读数:165

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭