gnumake中文手册v38学习780393736_完整内容摘要:
cd” 进入一个目录时, “ w” 选项会被自动打开。 主控 make 可以使用选项 “ s” ( “ slient” )来禁止此选项。 另外, make 的命令行选项 “ noprintdirectory” ,将禁止所有关于目录信息的打印。 变 量名是大小写敏感的。 变量 “foo” 、 “Foo” 和 “FOO” 指的是三个不同的变量。 Makefile 传统做法是变量名是全采用 大写的方式。 推荐的做法是在对于内部定义定义的一般 变量(例如:目标文件列表 objects)使用小写方式,而对于一些参数列表(例如:编译选项 CFLAGS)采用大写方式 当我们定义了一个变量之后,就可以在 Makefile 的很多地方使用这个变量。 变量的引用方式是: “$ ( VARIABLE_NAME) ” 或者“${ VARIABLE_NAME }” 来引用一个变量的定义。 注意: Makefile 中在对一些简单变量的引用,我们也可以不使用 “ () ”和 “{}” 来标记变量名,而直 接使用 “$x” 的格式 来实现,此种用法仅限于 变量名为单字符的情况。 另外自动化变量也使用这种格式。 对于一般多字符变量的引用必须使用括号了标记,否则 make 将把变量名的首 字母作为作为变量而不是整个字符串( “$PATH” 在 Makefile 中实际上是 “$(P)ATH” )。 这一点和 shell 中变量的引用方式不同。 shell 中变量的引用可以是 “${xx}” 或者 “$xx” 格式。 但在 Makefile 中多字符变量名的引用只能是 “$(xx)” 或者 “${xx}” 格 式。 一般在我们书写 Makefile 时,各部分变量引用的格式我们建议如下: 1. make 变量( Makefile 中定义的或者是 make 的环境变量)的引用使用“$(VAR)” 格式 ,无论 “VAR” 是单字符变量名还是多字符变量名。 2. 出现在 规则命令行中 shell 变量(一般为执行命令过程中的临时变量,它不属于 Makefile 变量,而是一个 shell 变量)引用使用 shell 的“$tmp” 格式。 3. 对 出现在命令行中的 make 变量我们同样使用 “$(CMDVAR)” 格式来引用。 例如: sample Makefile „„ SUBDIRS := src foo .PHONY : subdir Subdir : @for dir in $(SUBDIRS)。 do \ $(MAKE) – C $$dir || exit 1。 \ done „„ 下边我们来看一个复杂一点的例子。 分析一下直接展开式变量定义( :=)的用法,这里也用到了 make 的 shell 函数和变量 “MAKELEVEL” (此变量在 make 的递归调用时代表 make 的调用深度)。 其中包括了对函数、条件表达式和系统变量 “MAKELEVEL” 的使用: ifeq (0,${MAKELEVEL}) curdir := $(shell pwd) whoami := $(shell whoami) hosttype := $(shell arch) MAKE := ${MAKE} hosttype=${hosttype} whoami=${whoami} endif 第一行是一个条件判断,如果是顶层 Makefile,就定义下列变量。 否则不定义任何变量。 第二、三、四、五行分别定义了一个变量,在进行变量定义时对引用到的其它变量和函数展开。 最后结 束定义。 利用直接展开式的特点我们可以书写这样一个规则: ${subdirs}: ${MAKE} curdir=${curdir}/$@ C $@ all 它实现了在不同子目录下变量 “cur_dir” 使用不同的值(为当前工作目录)。 在 复杂的 Makefile 中,推荐使用直接展开式变量。 因为这种风格变量的使用方式和大多数编程语言中的变量使用方式基本上相同。 它可以使一个比较复杂的 Makefile 在一定程度上具有可预测性。 而且这种变量允许我们利用之前所定义的值来重新定义它(比如使用某一个函数 来对它以前的值进行处理并重新赋 值),此方式在 Makefile 中经常用到。 尽量避免和减少递归式变量的使用。 “ 自动化变量 ” ,诸如 “$^” 等。 规则命令行中的自动化变量 “$^” 代表所有通过目录搜索得到的依赖文件的完整路径名(目录 + 一般文件名)列表。 “$@” 代表规则的目标。 所以对于一个规则我们可以进行如下的描述: : cc c $(CFLAGS) $^ o $@ 第六章: Makefile 中的变量 需要全部阅读 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 通常我们会使用它来判断一个变量的值是否为空(不是任何字符)。 参数值可能是通过引用变量或者函数得到的,因而在展开过程中可能造成参数值中包含空字符(空格等)。 一般在这种情况时我们使用 make 的 “strip”函数 来对它变量的值进行处理,去掉其中的空字符。 格式为: ifeq ($(strip $(foo)),) TEXTIFEMPTY endif 条件判断 o ifeq, ifneq o ifdef, ifndef 对于 “ifdef” 需要 说明的是: ifdef 只是测试一个变量是否有值,不会对变量进行替换展开来判断变量的值是否为空。 对于变量“VARIABLE NAME” ,除了 “VARIABLE NAME=” 这种情况和从未定义该变量以外,使用其它方式对它的定义都会使 “ifdef” 返回真。 就是说,即使我们通过其它方式(比如,定义它的值引用了 其它的变量)给它赋了一个空值, “ifdef” 也会返回真。 因此当我们需要判断一个变量的值是否为空的情况时,需要使用 “ifeq”(或者 “ifneq” )而不是 “ifdef”。 make 的内嵌函数 GNU make 函数的调用格式类似于变量的引用,以 “$” 开始表示一个引用。 语法格式如下: $(FUNCTION ARGUMENTS) 或者: ${FUNCTION ARGUMENTS} 对于函数调用的格式有以下几点说明: 调用语法格式中 “FUNCTION” 是需要调用的函数名,它应该是 make 内嵌的函数名。 对于 用户自己的函数需要通过 make 的 “call” 函数来间接调用。 函数处理参数时, 参数中如果存在对其它变量或者函数的引用,首先对这些引用进行展开得到参数的实际内容, 而后才对它们进行处理。 以下是 GNU make 内 嵌的文本(字符串)处理函数 o $(subst FROM,TO,TEXT) o $(patsubst PATTERN,REPLACEMENT,TEXT) o $(strip STRINT) “strip” 函数经常用在条件判断语句的表达式中,确保表达式比较的可靠和健壮。 o $(findstring FIND,IN) o $(filter PATTERN„,TEXT) o $(filterout PATTERN...,TEXT) o $(word N,TEXT) o $(wordlist S,E,TEXT) o $(words TEXT) o $(firstword NAMES„) 文件名处理函数 o $(suffix NAMES„) o $(basename NAMES„) o $(addsuffix SUFFIX,NAMES„) o $(addprefix PREFIX,NAMES„) o $(join LIST1,LIST2) o $(wildcard PATTERN) o $(foreach VAR,LIST,TEXT) dirs := a b c d files := $(foreach dir,$(dirs),$(wildcard $(dir)/*)) === files := $(wildcard a/* b/* c/* d/*) o $(if CONDITION,THENPART[,ELSEPART]) SUBDIR += $(if $(SRC_DIR) $(SRC_DIR),/home/src) o eval函数 o shell 函数 函数 “shell” 所实现的功能和 shell 中的引用( ``)相同 函数的返回结果是此命令在 shell 中的执行结果。 make 仅仅对它的回返结果进行处理; make 将函数返回结果中的所有换行符( “ \n” )或者一对 “ \n\r” 替换为单 空格;并去掉末尾的回车符号( “ \n” )或者 “ \n\r”。 当引用 “shell” 函数的变量定义使用直接展开式定义时可以保证函数的展开是在 make 读入 Makefile 时完成。 后续对此变量的引用就不会有展开过程。 这样就可以避免规则命令行中的变量引用在命令行执行时展开的情况发生 内嵌变量 “CFLAGS” 代表了 gcc 编译器编译源文件的编译选项,我们就可以在 Makefile 中重新定义它,来改变编译源文件所要使用的参数。 sample Makefile CUR_DIR = $(shell pwd) INCS := $(CUR_DIR)/include CFLAGS := Wall – I$(INCS) EXEF := foo bar .PHONY : all clea。gnumake中文手册v38学习780393736_完整
相关推荐
B、不可 90度直角拐弯 8)下面所划接地,那种情况正确( B)。 9)室外馈线接地是为了( A),接地是向着馈线( C)方向。 A、防雷 B、防静电 C、下行 D、上行 10) 关于室内覆盖系统,下列说法错误的是( B) A、在用无线直放为信源的室内覆盖系统中,可能会对接入的宏蜂窝造成干扰 B、 室内覆盖系统设计中,干放的功率越大越好 C、 在进行室内覆盖系统功率调整时,应把无线信号控制在室内
产品测试评价方法》 36. GB/T 202782020 《信息安全技术 网络脆弱性扫描产品技术要求》 37. GB/T 202832020 《信息安全技术 保护轮廓和安全目标的产生指南》 38. GB/T 210542020 《信息安全技术 公钥基础设施 PKI 系统安全等级保护评估准则》 39. GB/T 210532020 《信息安全 技术 公钥基础设施 PKI 系统安全等级保护技术要求》
添加”,添加 ip 地址 子网掩码 ,这 2 个地址为 SAS 5/E 默认连接地址。 双机热备配置文档 四、 安装 SAS 5E 驱动程序 如果您还没有安装 SAS5/E 的驱动程序,这里先要进行 SAS 5/E 驱动程序的安装 使用 Dell SAS 5/E 驱动程序安装向导,安装驱动。 双机热备配置文档 DELL 软件许可协议。 选择适配器设备的驱动程序。 双机热备配置文档 选择安装
返 工 通 知 单 记录: 原药名称 来货批号 饮片名称 生产批号 检验报告书号 检验结果及返工原因: 质保部 年 月 日 **中药 有限公司 退 货 通 知 单 记录 来货编号 货 号 品 名 来货单位 仓 位 数 量 件 公斤 退货原因 检验员(签章) 年 月 日 质保部意见 质保部长(签章) 年 月 日 供应部门 退货部门(签章) 年 月 日 来货单位 联系人 年 月 日 说明 1.
. 1. 3. 4 “ 微速落钩 ” 两小臂水平伸向侧前方,五指伸开,手心朝下,手以腕部为轴向下摆动。 当要求双机以不同的速度降落时,指挥降落速度快的一方,手要低于另一只手(图 32)。 图 32 2. 1. 3. 5 “ 慢速落钩 ” 两小臂水平伸向前侧方,五指伸开,手心朝下,小臂以肘部为轴向下摆动。 当要求双机以不同的速度降落时,指挥降落速度快的一方,手要低于另一只手(图 33)。 图 33
当水源水质较差,电导率已超出了规定上 限时,通常有两种方式降低给水电导率: ——采用软化处理时,增加生产返回水回收率。 给水电导率 ≈( 1-回收率)原水电导率,从此式不难看出,生产返回水回收率每增加 10%,给水电导率可 11 比原水电导率降低 10%,也就是说回收率越高,给水质量越好。 生产返回水尽量回收不但对防止锅炉结垢、防止蒸汽带水大有益处,而且也符合国家节能降耗政策。