Discuz! Board

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 1|回復: 0

程序可以取消引用值,但它也可

[複製鏈接]

1

主題

1

帖子

5

積分

新手上路

Rank: 1

積分
5
發表於 13:22:39 | 顯示全部樓層 |閱讀模式
以处理许多内置函数。尽管某些功能可以用标准 shell 命令替换。 注意:完整的函数列表可以在 GNU Make 网站上找到。 筛选 # 让我们看一下Make提供的一些有趣的功能。我喜欢的第一个外观是filter: filter: foo.txt bar.txt baz.txt echo (filter ba%.txt, ^) 复制 在此规则中,我们使用该filter函数,该函数将您想要尝试匹配的模式和您想要在其中搜索的文本作为其第一个参数。在我们的示例中,要搜索的文本是先决条件列表(^我们已经看到过)。我们希望匹配的模式使用%占位符通配符值,并且过滤器仅返回以 开头ba和结尾的文件.txt。这会导致bar.txt baz.txt打印结果。 壳 # 在目标之外,您可以使用该v := (shell <command>)模式让。

变量动态地从 shell 环境中提取数据。 注意:因为我们使用的是该shell函数,所以我们使用:=简单扩展而不是=,这将允许递归取消引用,并且可能会导致问题,具体取决于您的 Makefile 和 shell 脚本正在执行的操作。 在下面的示例中,我们使用该shell函数来计算 1 和 1 相加的 购买电话号码列表 结果。然后我们从目标中取消引用该值: calculation := (shell echo ((1 + 1))) shelled_value: echo (calculation) 复制 注意:在 shell 中,要做算术(和其他类似的事情),我们需要使用表达式实用程序((...)),所以不要错误地认为它是 Make 特有的语法,因为它不是。 评估  在下面的代码片段中,我们使用该eval函数在运行时动态创建 Makefile 变量: dyn_eval: (eval FOOBAR:=(shell ech。



o 123)) echo (FOOBAR) 复制 我们使用该shell函数返回动态生成的值(在本例中123)并将其分配给变量 FOOBAR。但为了允许我们从该目标以及其他不相关目标中的其他命令访问 FOOBAR,我们使用eval全局创建变量。最后,我们使用()取消引用变量。 文件  =以下技术允许我们通过将 之前的匹配文本与其后面的文本交换来执行简单的替换。然后将定义的模式应用于正在取消引用的变量: files = foo.txt bar.txt baz.txt change_ext: echo (files:.txt=.doc) 复制 上面的示例产生以下输出(请注意files文件列表现在如何具有.doc扩展名): foo.doc bar.doc baz.doc 复制 有许多函数和技术可以帮助您扩展 Make 中的功能,因此我强烈建议您阅读GNU Make 手册中列。


回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|自動贊助|z

GMT+8, 05:31 , Processed in 0.037985 second(s), 18 queries .

抗攻擊 by GameHost X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表
一粒米 | 中興米 | 論壇美工 | 設計 抗ddos | 天堂私服 | ddos | ddos | 防ddos | 防禦ddos | 防ddos主機 | 天堂美工 | 設計 防ddos主機 | 抗ddos主機 | 抗ddos | 抗ddos主機 | 抗攻擊論壇 | 天堂自動贊助 | 免費論壇 | 天堂私服 | 天堂123 | 台南清潔 | 天堂 | 天堂私服 | 免費論壇申請 | 抗ddos | 虛擬主機 | 實體主機 | vps | 網域註冊 | 抗攻擊遊戲主機 | ddos |