GNU make manual 翻译( 一百六十)

继续翻译

 

The only restriction on this sort of use of nested variable
references is that they cannot specify part of the name of a function
to be called. This is because the test for a recognized function name
is done before the expansion of nested references. For example,

 

ifdef do_sort
func := sort
else
func := strip
endif

 

bar := a d b g q c

 

foo := $($(func) $(bar))

 

attempts to give `foo' the value of the variable `sort a d b g q c' or
`strip a d b g q c', rather than giving `a d b g q c' as the argument
to either the `sort' or the `strip' function. This restriction could
be removed in the future if that change is shown to be a good idea.

 

You can also use computed variable names in the left-hand side of a
variable assignment, or in a `define' directive, as in:

 

dir = foo
$(dir)_sources := $(wildcard $(dir)/*.c)
define $(dir)_print =
lpr $($(dir)_sources)
endef

 

This example defines the variables `dir', `foo_sources', and
`foo_print'.

 

Note that "nested variable references" are quite different from
recursively expanded variables (*note The Two Flavors of Variables:
Flavors.), though both are used together in complex ways when doing
makefile programming.

 

对于这种对嵌套式变量参照使用的唯一的限制是他们不能指定一个要调用的函数名称的部分。这是因为对一个被认识的函数名称的测试已经在嵌套参照之前完成了。例如,

ifdef do_sort

  func := sort
else
  func := strip
endif

bar := a d b g q c

foo := $($(func) $(bar))

试图给出 `foo' 变量值为 `sort a d b g q c' 或 `strip a d b g q c', 而不是给出`a d b g q c' 作为 `sort' 或者 `strip' 函数的参数。如果未来考虑到改变此限制会更好,也许未来会进行改变。

你可以在一个变量赋值或define指令的左边得左边使用被计算的变量名,就像是这样:

dir = foo

$(dir)_sources := $(wildcard $(dir)/*.c)
define $(dir)_print =
lpr $($(dir)_sources)
endef

这个例子定义了变量 `dir', `foo_sources', 和`foo_print'。

要注意这个 "嵌套变量参照" 是和 递归式扩展变量很不一样的。(*note The Two Flavors of Variables: Flavors.) 尽管它们都在 makefile 编程时以复杂的方式进行使用。 

这里我插入一句,

dir = foo

$(dir)_sources := $(wildcard $(dir)/*.c)

相当于 把  foo目录下的 所有的.c 文件名 获得后,赋值为 foo_sources

后文待续

转载于:https://www.cnblogs.com/gaojian/archive/2012/10/04/2711261.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vb如何嵌套chrome_译丨如何为开源软件做出贡献

原文:How to Contribute to Open Source Software作者:Matt Eland译者:博轩为保证文章的可读性,本文采用意译,转载请保留原文链接前段时间参加了2020年1月11日Node party线下分享,justjavac 大佬分享的主题…

反转一个单链表,分别以迭代和递归的形式来实现

迭代法&#xff1a; 1 // 反转单链表.cpp : 定义控制台应用程序的入口点。2 3 #include "stdafx.h"4 #include <stdlib.h>5 6 typedef struct node7 {8 int data;9 struct node *next; 10 }linknode,*linklist; 11 12 linknode *reverse(linknode *he…

codesys中打开linux端的串口_CODESYS版本3.5 SP14 Patch 3发布

此版本有以下内容更新主要功能概述&#xff1a;CODESYS Engineering改进了智能输入辅助、监视列表、监视、 CPU负载、编译调试等;新的数据类型&#xff1a;LREAL或REAL中的__VECTOR [3];用于同步任务特别是多核架构的的原子操作符;一般改进&#xff1a;在源代码中的设备树、全局…

java解析md文件,mavon-editor 存储md文件以及md文件解析成html文件

1、md文件的存储javascript由于是vue-cli项目&#xff0c;因此使用的是mavonEditor.css使用方法&#xff1a;vue首先安装&#xff1a;javanpm install mavon-editor --save而后在相应的组件里引用&#xff1a;git//引入import {mavonEditor} from mavon-editorimport mavon-edi…

合并果子(Vijos P1097)

刚刚做出这道题&#xff0c;感觉很兴奋啊&#xff0c;对于我这种弱菜来说能完美的AC这道题真是令人振奋不已啊&#xff01; &#xff08;情不自禁的将AC记录发上来了&#xff0c;勿怪勿怪&#xff01;&#xff09; 这道题是我们向总点名要做的&#xff0c;这几天学了很多新内容…

vim 删除行_【收藏】138条 Vim 命令、操作、快捷键全

关注我&#xff0c;你的眼睛会怀孕命令历史以:和/开头的命令都有历史纪录&#xff0c;可以首先键入:或/然后按上下箭头来选择某个历史命令。启动vim在命令行窗口中输入以下命令即可vim 直接启动vimvim filename 打开vim并创建名为filename的文件文件命令打开单个文件vim file同…

matlab 按钮组设置,MATLAB中的单选按钮和按钮组

MATLAB GUI中的单选按钮和按钮组matlabGUI界面中的单选(radiobutton)按钮不提供互斥功能&#xff0c;要通过程序实现。方法一&#xff1a;假设有3个radiobutton&#xff0c;分别为radiobutton1、radiobutton2、radiobutton3。radiobutton1的回调函数&#xff1a;functionradiob…

十年只为一个摧残的梦(转载)

第一篇《十年只为一个摧残的梦》 一&#xff1a; 这10年&#xff0c;一定要有自己的方向 1.没有方向感&#xff0c;是最要命的 2.不管起点有多低&#xff0c;都要坦然接受  3.围绕自己的兴趣爱好选择职业 4.做自己最擅长的事 5.从最容易实现的目标开始做起 二&#xff1a; 这…

mysql的join算法,Mysql Join 连接算法

Join 语句的两种算法&#xff0c;分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL)。直接使用join mysql 优化器自动选择 驱动表。从驱动表读入数据&#xff0c;然后根据连接字段&#xff0c;根据条件匹配被驱动表&#xff0c;然后返回结果集&#xff0c;重…

vlookup练习_那个vlookup,我总是学不会啊

在Excel函数中&#xff0c;有那么的一个万金油Excel函数&#xff0c;它既可以正向查找&#xff0c;逆向查找&#xff0c;还可以多条件查找&#xff0c;它就是Vlookup。Vlookup与IF、sumifs/countifs誉为四大必学Excel函数。以下内容节选自【快速入门Excel基础教程】中的第4-2章…

php 数组课件,php学习 数组课件

下标&#xff1a;数组中的识别名称 也就是字符串或整数在数组中的代号数组中有几个索引值就被称为几维数组。索引值&#xff1a;索引是对数据库表中一列或多列的值进行排序的一种结构。数组分类在PHP数组被分为两种&#xff1a;索引数组&#xff1a;索引(indexed)索引值是整数&…

uniapph5授权成功后返回上一页_记一次授权系统的安全测试

山东泽鹿安全威胁管理 漏洞运营 应急响应原创声明&#xff1a;泽鹿安全原创文章&#xff0c;欢迎转载&#xff0c;请注明出处&#xff01;ID : 秋水拿到授权系统IP&#xff0c;首先测一下目录找后台&#xff0c;Nmap扫一下端口&#xff0c;看看后台是不是在其他端口就可以了…

关于团队项目的一些感想——刘宇翔

技术确实很重要&#xff0c;但跟重要的是配合&#xff0c;毕竟以后写的可不是小项目。做项目&#xff0c;不是为了证明自己有多厉害&#xff0c;要的是团队&#xff0c;不是个人能力&#xff0c;虽然个人能力重要&#xff0c;但学会做人才是最重要的。1.先做代码规范。约定文件…