Makefile:修改模式规则中的词干

2023-12-29

我的目录中有文件名为data and helpers,我想用它们来创建目标文件result.

目录结构如下:

data
 + A
 | + file1
 | + file2
 | + ...
 + B
 | + file1
 ...
helpers
 + file1
 + file2
 ...

目录结构在result与中相同data。因此,我想写下以下规则:

result/%: data/% helpers/% script
    script $@ $(word 1,$^) $(word 2,$^)

这样做的问题是file1, file2等在helpers目录不在子目录中。

我现在有以下选择:

  • 为每个子目录编写一个单独的规则(不切实际,有 20 个)
  • do a foreach包括创建规则的每个子目录(那么我如何访问先决条件列表?)

但是,我更愿意写以下内容之一:

result/%: data/% helpers/$(basename %) # this doesn't work
result/%: data/% helpers/$(basename $*) # this doesn't work either

有没有办法通过修改它匹配的词干来修改规则声明中的模式?


做你想做的事情的唯一方法是启用二次扩张 http://www.gnu.org/software/make/manual/html_node/Secondary-Expansion.html#Secondary-Expansion在你的 makefile 中。

Example:

请注意,目录前缀 (D),如隐式规则搜索算法中所述,被附加(扩展后)到先决条件列表中的所有模式。举个例子:

.第二扩展:

/tmp/foo.o:

%.o: $$(addsuffix /%.c,foo bar) foo.h
        @echo $^

经过二次扩展和目录前缀重构后,打印的先决条件列表将为 /tmp/foo/foo.c /tmp/bar/foo.c foo.h。如果您对这种重建不感兴趣,可以在先决条件列表中使用 $$* 代替 %。

所以像这样的东西应该有效(未经测试):

.SECONDEXPANSION:
result/%: data/% helpers/$$(notdir %)

make's basename和shell的不一样basename (that 不断地让我绊倒)。

如果你想使用$(foreach)虽然你想要类似的东西(未经测试):

define dirrule
result/$1/%: data/$1/% helpers/%
        @echo cmd 1
        @echo cmd 2
endef

$(foreach dir,subdir1 subdir2 ... subdir20,$(eval $(call dirrule,$(dir))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Makefile:修改模式规则中的词干 的相关文章

随机推荐

  • 在 Python 中将一个变量的值赋给另一个变量时会发生什么?

    这是我学习 python 的第二天 我知道 C 的基础知识和一些 OOP 我对 python 中的变量有一些轻微的困惑 以下是我目前对它们的理解 Python 变量是对象 可变或不可变 的引用 或指针 当我们有类似的事情时num 5 不可变
  • 将 CMS 集成到已建立的以应用程序为中心的 MVC 网站中

    我有一个以应用程序为中心的 ASP NET MVC 在 SQL EF 上 网站 大约需要 10 分钟 5 年来 已经向大约 25 000 名会员提供了一些专门的类似于招聘板的 AJAX 应用程序 大多数网站相当丰富的现有应用程序数据模式都在
  • ActionWebService 和 Rails 3 /

    我在一个 Rails 3 项目中尝试使用以下命令安装 actionwebservice gem rails 3 0 4 gem actionwebservice git gt https github com ywen actionwebs
  • 如何使用 xUnit、SubSpec 和 FakeItEasy 测试抛出的异常

    我使用 xUnit SubSpec 和 FakeItEasy 进行单元测试 到目前为止 我已经创建了一些积极的单元测试 如下所示 Given a Options presenter Context gt presenter new Opti
  • javascript 中的这是什么:“var var1 = var1 || []”

    我只是想增加我的核心 JavaScript 知识 有时我会看到这样的语句 但我不知道它的作用 var var1 var1 它是什么意思和 或它的用途是什么 以及如何使用它 谢谢 基本上 它会查看变量是否var1已经存在并且是 真实的 如果是
  • 如何忽略 jq 中损坏的 JSON 行?

    使用时jq为了处理日志文件 某些行可能会被破坏 因此jq抛出错误并停止处理 例如完整日志 level debug time 2021 09 24T19 42 47 140 0800 message sent send binary to w
  • Qt 的控制台/终端小部件?

    有人知道 Qt4 中充当终端 控制台的小部件吗 开源会很好 提前致谢 QConsole http qconsole sourceforge net 曾经做过类似的事情 不确定该项目是否已激活 但您可能想看看
  • 重音不敏感搜索 django sqlite

    我正在使用 sqlite 和 django 我正在尝试使用非重音搜索查询来搜索存储在 sqlite 数据库中的重音字符串 例如 当数据库包含 R o Grande 时 搜索 Rio Grande 我发现这个帖子SQLite 不区分重音的搜索
  • 是否可以反向解码 x86-64 指令?

    我想知道是否可以反向解码 x86 64 指令 我需要这个作为运行时反汇编器 用户可以指向内存中的随机位置 然后应该能够向上滚动并查看指定地址之前有哪些指令 我想通过反向解码来做到这一点 x86 指令流不是自同步的 只能向前明确解码 您需要知
  • 有没有可以离线工作的 Java 翻译库?

    我真的需要找到一个可以翻译的Java翻译库 法语 英语 德语等语言之间 但不需要 互联网连接 要翻译单独的单词 请查看 它们具有简单的基于文本的格式 可以使用 Java 轻松解析
  • 在某个位置插入列表的成本/复杂性是多少?

    在 Python 中 一个list https docs python org 2 tutorial datastructures html more on lists has list insert i x 到 在给定位置插入项目 在C
  • 带 .htaccess 的 PHP 根目录

    我使用的是 000webhost 它使用根文件夹中的 public html 文件夹作为站点的可见根 在该文件夹中 我有一个包含一些 PHP 脚本的资产文件夹 以及包含 PHP 索引页的其他文件夹 使用require assets incl
  • 在 F# 中运行 ML.Net Iris 演示时,我使用 TextLoader 是否错误?

    我是 F NET 新手 我正在尝试运行接受的答案中提供的 F 示例如何将介绍性 ML Net 演示转换为 F https stackoverflow com questions 50322653 how to translate the i
  • PHP无会话用户认证教程

    我需要为计算机安全项目的一部分构建自己的系统 而不使用 php 会话 仅 cookie 但我迷路了 我发现的所有教程都使用会话 有充分的理由 所以我想知道是否有人知道自己的 php 用户身份验证教程 你基本上可以像你自己一样实现一些会话 这
  • nil:NilClass 与 simple_form 和 Mongoid 的未定义方法 `valid_options'

    我有两个模型 类别和帖子 类别 rb class Category include Mongoid Document field title type gt String has many posts autosave gt true de
  • Angular 2 - 样式组件的选择器边框 css 属性

    Update 在我下面的评论中 您可以在 Google Drive 上找到一个压缩项目 任何人都可以制作一个 Plunker 我从未做过 需要更改什么 任何解释此更改的文章 博客 我有一个SearchComponent这延伸了BaseCom
  • 优化包含窗口函数的参数化 T-SQL 查询的执行计划

    编辑 我已经更新了示例代码并提供了完整的表和视图实现以供参考 但基本问题保持不变 我在尝试查询的数据库中有一个相当复杂的视图 当我尝试通过将 WHERE 子句硬编码为特定外键值来从视图中检索一组行时 视图会以最佳执行计划 正确使用索引等 快
  • PostgreSQL GROUP BY LOWER() 不起作用

    我正在尝试使用GROUP BY在 PostgreSQL 9 4 1 中 并没有像我希望的那样成功 有几个人 http bytes com topic postgresql answers 422112 group case insensit
  • 如何播放 WPF 声音文件资源

    我正在尝试在 WPF 应用程序中播放声音文件 目前我有以下电话 private void PlaySound string uriPath Uri uri new Uri pack application Media movepoint w
  • Makefile:修改模式规则中的词干

    我的目录中有文件名为data and helpers 我想用它们来创建目标文件result 目录结构如下 data A file1 file2 B file1 helpers file1 file2 目录结构在result与中相同data