资讯详情

Makefile注意事项

最近再看专业嵌入式软件设计这本书,总体感觉这本书对工具的介绍非常的详细,看了一下基本的Makefile编程,将书上的几个重点总结一下。

首先,Makefile就是一个管理器。 1、在Makefile中主要是由规则构成。 每一个规则都是由三个部分构成: target : depending <Tab> command 每一个规则都是这三部分组成,当然也不一定全部存在。 2、在规则中的每一条命令,make都是在一个新的shell上运行。如果希望多个命令在同一个shell中运行,可以用“;”将这些命令连接起来。当命令很长时,可以采用“\”将一个命令分成多行书写。 基本的实例如下: [gong@Gong-Computer Makefile]$ ls complicated Makefile Makefile1 simple [gong@Gong-Computer Makefile]$ vi Makefile
  1. 1 .PHY : all
  2. 2
  3. 3 all:
  4. 4 @mkdir test ;\
  5. 5 cd test ;\
  6. 6 mkdir subtest
  7. ~
[gong@Gong-Computer Makefile]$ make [gong@Gong-Computer Makefile]$ ls complicated Makefile Makefile1 simple test [gong@Gong-Computer Makefile]$ cd test/ [gong@Gong-Computer test]$ ls subtest [gong@Gong-Computer test]$ 从上面的结果可以知道,所有的操作是在同一个shell中,而不是每一个命令一个新的shell。如果将Makefile改成下面的形式就会出现不一样的结果.
  1. 1 .PHONY : all
  2. 2
  3. 3 all:
  4. 4 @mkdir test
  5. 5 @cd test
  6. 6 @mkdir subtest
  7. ~
[gong@Gong-Computer Makefile]$ ls complicated Makefile Makefile1 simple [gong@Gong-Computer Makefile]$ make [gong@Gong-Computer Makefile]$ ls complicated Makefile Makefile1 simple subtest test 从上面的实验效果可以知道上面的三个命令并不是在同一个shell中执行,而是分别不同的shell,导致了与我们期望的结果存在差别。 因此在实际的多个命令时一定要记得加上";"和“\”,不然得到的结果就会出现异样。 3、适当的运用函数可以简化Makefile的设计。主要的集合函数主要是abspath,addprefix(加前缀), addsuffix(加后缀),eval ,filter(得到某一类文件名),filter-out(去除某一类文件名),notdir(找到路劲中的文件名),patsubst(常用的替代函数),realpath,wildcard(找到当前工作目录下的文件名或者目录名)。 4、Makfile的设计直接决定后期修改的复杂程度,需要加强练习。 -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台