博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openwrt makefile选项
阅读量:6608 次
发布时间:2019-06-24

本文共 1595 字,大约阅读时间需要 5 分钟。

Package/conffiles (optional)

由该包安装的配置文件的列表,一行一个文件。

 

BuildPackage宏

最重要的一个宏是 BuildPackage。它会在 Makefile 的最后一行被引用。它的实现也就是在 package.mk 文件里。如下为其源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
define BuildPackage
  
$(Build
/IncludeOverlay
)
  
$(
eval 
$(Package
/Default
))    
#定义在package-defaults.mk文件里
  
$(
eval 
$(Package/$(1)))       
#调用用户自定义的 Package/<包名> 宏
 
  
ifdef DESCRIPTION
    
$$(error DESCRIPTION:= is obsolete, use Package
/PKG_NAME/description
)
  
endif
 
  
#检查有没有定义 Package/<包名>/description宏,如果没有定义,则以TITLE默认定义一个
  
ifndef Package/$(1)
/description
    
define Package/$(1)
/description
      
$(TITLE)
    
endef
  
endif
 
  
BUILD_PACKAGES += $(1)
  
$(STAMP_PREPARED): $$(
if 
$(QUILT)$(DUMP),,$(call find_library_dependencies,$(DEPENDS)))
 
  
#检查 TITLE, CATEGORY, SECTION, VERSION 是否定义,如果没有定义则报错
  
$(foreach FIELD, TITLE CATEGORY SECTION VERSION,
    
ifeq ($($(FIELD)),)
      
$$(error Package/$(1) is missing the $(FIELD) field)
    
endif
  
)
 
  
#如果有定义DUMP,那就引入Dumpinfo/Package宏的内部。
  
#如果没有,那么就引用 Packaget/<包名>/targets里面的每一个target,如果没有定义Packaget/<包名>/targets宏,那么将PKG_TARGETS里的每个target取出来,
  
#如果也没有定义PKG_TARGETS,那就默认ipkg作为target。将每一个target,引用 BuildTarget/$(target)。
  
$(
if 
$(DUMP), \
    
$(Dumpinfo
/Package
), \
    
$(foreach target, \
      
$(
if 
$(Package/$(1)
/targets
),$(Package/$(1)
/targets
), \
        
$(
if 
$(PKG_TARGETS),$(PKG_TARGETS), ipkg) \
      
), $(BuildTarget/$(target)) \
    
) \
  
)
  
$(
if 
$(PKG_HOST_ONLY)$(DUMP),,$(call Build
/DefaultTargets
,$(1)))
endef

总结一下语法:

$() 表示要执行的一条语句

$(if 条件, 成立执行, 失败执行)        if条件分支

$(foreach 变量, 成员列表, 执行体)   成员遍历语句

可以看出,语句是可以嵌套使用的。

$(N)  表示第N个参数

 

 

转载于:https://www.cnblogs.com/rohens-hbg/p/5016380.html

你可能感兴趣的文章
SAP QM Transfer of Inspection Stock
查看>>
全新视觉| 数治省市:SAP大数据构想一切可能
查看>>
ORACLE expdp备份与ORA-31693、ORA-02354、ORA-02149
查看>>
SAP S/4 HANA新变化-信用管理
查看>>
doc-remote-debugging.html
查看>>
DBMS_STATS.GATHER_TABLE_STATS
查看>>
Java-单机版的书店管理系统(练习设计模块和思想_系列 五 )
查看>>
嵌入式 详解udev
查看>>
《C程序员:从校园到职场》出版预告(2):从“百花齐放”到“一枝独秀”
查看>>
Network Monitor 查询命令和MySQL命令
查看>>
好“戏”刚刚开幕 云计算逐步被认可
查看>>
云安全:这也是需要花大钱去建设的部分
查看>>
以全局产业观领航智慧城市建设
查看>>
5G网络不止能1秒下一部电影,它还能够…
查看>>
中国电信集采终端6700万部 金额达1070亿元
查看>>
2016年的十个数据中心故事
查看>>
《Java并发编程的艺术》一一3.3 顺序一致性
查看>>
《CCNP SWITCH 300-115认证考试指南》——导读
查看>>
《设计之外——比修图更重要的111件事》—第1部分3 虚心学习
查看>>
Solaris Studio 12.4 Beta update 7/2014
查看>>