为什么 makefile 惰性评估会在“父”配方中找到文件,但找不到当前文件?

2024-01-11

这个问题是后续问题什么 makefile 惰性求值规则控制此行为? https://stackoverflow.com/questions/64084461/what-makefile-lazy-evaluation-rule-governs-this-behavior#64084491。我仍在尝试理解 gnu make 的惰性求值的一些规则。

在配方更新目录后,我想要为该目录​​的内容创建一个 make 变量。

这个 Makefile 表明$(A_FILE)当创建的文件位于实际创建文件的配方的“父级”中时,将进行评估以查找创建的文件:

A_FILE = $(wildcard subdir/*)

all: a
        @echo $(A_FILE)

a:
        @mkdir ./subdir
        @touch subdir/b
$ rm -rf ./subdir/ && make
subdir/b
$ 

但下面的 Makefile 有一个看似微不足道的变化:$(A_FILE)在更新其包含目录的配方中引用 - 但现在变量为空:

A_FILE = $(wildcard subdir/*)

all: a
        @echo $(A_FILE)

a:
        @mkdir ./subdir
        @touch subdir/b
        @sleep 1
        @echo $(A_FILE)
$ rm -rf ./subdir/ && make


$ 

我添加了sleep排除目录更新后过快被拖网的时间问题。是什么赋予了?为什么$(A_FILE)如果在较高层配方中引用了更新的子目录内容,但没有在实际更新的较低层配方中引用它,则根据更新的子目录内容进行评估?


GNU make 评估all配方开始运行之前的行any食谱中的一行。所以,当它准备好运行你的规则配方时a它首先展开所有行,包括最后一行$(A_FILE)在里面。此时配方的任何部分尚未运行,因此结果为空。

然后在所有扩展之后,调用 shell 来运行配方中的行。

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

为什么 makefile 惰性评估会在“父”配方中找到文件,但找不到当前文件? 的相关文章

  • Makefile 和通配符

    好吧 这是我当前的 makefile 设置 有一些文件名为public01 c public02 c等等 我正在尝试使用以下方法为每个人制作目标文件public o带有通配符的标签 public o public c hashtable h
  • 从 Makefile 中的 C++FLAGS 中删除一个标志?

    我有一个 Makefile 其中包含另一个设置了很多默认值的 makefile 我无法编辑包含的 makefile 并且我想更改 makefile 中 C FLAGS 的值 即使它是在包含的 makefile 中设置的 具体来说 每当 de
  • 我怎样才能强制Make一直执行一个菜谱

    当前的 Makefile 有这样的内容 target1 lib1 a lib2 a target2 lib1 a lib3 a target3 lib3 a lib1 a MAKE C sub dir all 我想更改此 Makefile
  • @:(符号冒号)在 Makefile 中意味着什么?

    Makefile 中的以下内容有何作用 rule deps 我在制作手册中似乎找不到这个 它的意思是 不要在输出中回显此命令 所以这条规则是说 执行 shell 命令 并且不回显输出 当然是shell命令 是一个空操作 所以这就是说 什么都
  • 内核makefile中的$(call cmd,tags)这里的cmd指的是什么?

    在内核 Makefile 中我发现如下代码 ctags CTAGS CSCOPE HEADERS SOURCES ETAGS ETAGSFALGS HEADERS SOURCES call cmd ctags 另外 在哪里可以找到宏或函数
  • 在 Mac 上更新 Make 版本

    我正在尝试更新 mac 上的 make 版本 但遇到了问题 最小项目依赖项是 4 1 但我的版本似乎是 3 81 我已将 Xcode 更新到最新版本并安装了命令行工具 但它似乎仍然是旧版本 有谁遇到过这个问题或知道解决方法吗 这是我所做的
  • 如果未设置,则从控制台读取 Makefile 变量

    我正在更新一个从外部源访问某些资源的 Makefile 即存在以下形式的规则 External cvs up 对于不受限制的资源 它可以按预期工作 现在 出现了功能漂移 外部资源需要更复杂的登录 因此规则已更改为与此没有太大不同的内容 Ex
  • 如何在 Makefile 中定义全局 shell 函数?

    我想定义一个shell函数 bin sh test do some complicated tests 1 2 if something then build thisway 1 2 else build otherway 1 2 fi 这
  • makefile 目标依赖项取决于目标名称

    我有以下规则 SPECIAL file1 file2 o cpp a h CC c CFLAGS lt o 我希望如果 is in SPECIAL then b h已添加到依赖项列表中 有没有办法做到这一点 而不重复规则 您可以单独分配其他
  • 是否可以使用现有的 Makefile 在 Code::Blocks 中构建项目?

    编辑 我发现项目属性中有一个选项可以设置自定义生成文件 现在项目构建良好 现在 我偶然发现了如何在单击 运行 时指定要运行的目标可执行文件 代码 块 http www codeblocks org is an IDE https en wi
  • 错误:-march= 开关的值错误

    我写了一个Makefile 但无法让它工作 我有一个选项应该选择编译到哪个处理器 然而 当我跑步时make从命令行它说 tandex tandex P 6860FX emulators nintendo sdks 3DS SDK HomeB
  • 描述 makefile 中的头文件位置

    在我正在开发的一个新项目中 我有以下目录结构 Project base src bin h Makefile 在我的源文件中 我包含如下内容 include h SomeHeaderFile h 而不是更正确的形式 include Some
  • make:无需为“all”执行任何操作

    我正在通过一个eg pgm 来创建一个make 文件 http mrbook org tutorials make http mrbook org tutorials make 我的文件夹eg make creation包含以下文件 des
  • 如何复制Makefile中的目录?

    我有一个目录images 我想复制到build images 从 Makefile 中 该目录可能包含多个级别的子目录 最优雅的方法是什么 我想 避免每个目录都复制完整的目录make运行 即不cp r 保证一致性 即如果文件在images
  • 如何通过仅调用一个命令来构建多个目标?

    我得到了一个像下面这样的 Makefile PHONY all all aaa 2 bbb 2 aaa 2 aaa 1 common 1 create 2 bbb 2 bbb 1 common 1 create 2 程序 create 2
  • make:仅针对单个目标禁用子目录中的并行构建

    我有一个相当庞大的由自动工具驱动的项目 它位于一个目录树中 该目录树由许多带有子目录的目录组成 它有一个目标check 在每个子目录以及主目录中 执行大量自动化测试 这check目标是递归构建的 并行构建和测试 通过 j选项 make 适用
  • 您如何使编译器行更短?

    通常 当我与其他人一起处理一个项目时 随着时间的推移 编译器在 Makefile 中获取的库路径和包含路径的数量会变得越来越多 此外 路径也可能会变得很长 这是一个例子 g c pipe O2 Wall W DQT BOOTSTRAPPED
  • 将 make 与 msysgit 一起使用

    我在 Windows 7 上使用 msysgit 但它似乎没有附带 make 有没有一种简单的方法可以让 make 在 msysgit 上运行 我找到了一个link to make exe http repo or cz w msysgit
  • Windows 上 gnu make 的 libintl3 和 libiconv2 在哪里,需要在 MinGW 上用 ruby​​ 编译 vim

    我正在尝试为 Windows 运行 gnu make 但它无法运行 因为libint3 dll没找到 果然 http gnuwin32 sourceforge net packages make htm http gnuwin32 sour
  • 链接 C 代码时如何判断符号的定义位置

    我面临着链接中特定符号的未定义参考问题 error undefined reference to g queue pop nth 我正在 LOP 和 ARM 平台上工作 我们在两个平台上使用相同的环境 我们的 ARM 构建可以毫无问题地链接

随机推荐

  • 在保持状态的同时切换片段

    决定重写这个问题 我有三个片段 称为 A B C 每个片段都有一个视图 其中包含一些字段供用户填写 用户应该能够使用菜单在不同的片段之间切换 如果用户在片段 A 中填写信息 然后切换到 C 填写更多信息 然后切换回 A 则用户在 A 中键入
  • 使用时间模块测量经过的时间

    使用python中的Time模块可以测量经过的时间吗 如果是这样 我该怎么做 我需要这样做 以便如果光标在小部件中停留一段时间 就会发生事件 start time time time your code elapsed time time
  • 使用 Windows 复制对话框进行复制

    我目前正在使用shutil copy2 复制大量图像文件和文件夹 0 5 到 5 GB 之间的任意位置 Shutil工作正常 但是太慢了 我想知道是否有办法将此信息传递到 Windows 来制作副本并为我提供其标准传输对话框 你知道 这个人
  • 如何对 2 个 udp 客户端进行分组?

    我想做的是将 2 组客户分组并让他们相互沟通 因此 如果 2 个客户端连接 它们只能相互通信 如果第三个客户端连接 它将无法与其他 2 个客户端通信 但会创建另一组 2 个客户端 依此类推 对现在 如果客户端发送消息 它会将其发送给所有客户
  • Java ComboBox 不同的值和名称

    我有一个 Java 组合框和一个链接到 SQLite 数据库的项目 如果我有一个具有关联 ID 和名称的对象 class Employee public String name public int id 将这些条目放入 JComboBox
  • 如何在全屏独占模式下摆脱鼠标光标?

    我正在用 Java 开发一个简单的 2D 游戏引擎 并且在 FSEM 缓冲策略等方面没有遇到任何问题 我的问题是鼠标光标 在窗口模式下 我可以通过使用 JFrame 中的 setCursor 设置完全透明的光标来隐藏鼠标光标 没有问题 但是
  • 如何显示 JavaScript 对象?

    如何像我们一样以字符串格式显示 JavaScript 对象的内容alert一个变量 我想要显示对象的格式相同 使用原生JSON stringify方法 适用于嵌套对象和所有主要浏览器support http caniuse com sear
  • 解析来自服务器的 UTF8 JSON 响应

    我在解析服务器的 JSON 响应时遇到一个奇怪的问题 在收到回复时 过去几个月一直运行良好 内容类型 text html 这边走 string response using var client new System Net Http Ht
  • strcat 将第二个字符串粘贴到第一个字符串的开头

    i use strcat 连接两个字符串 例如 include
  • MySQL“截断了不正确的整数值”

    当我运行以下 UPDATE 查询时 出现奇怪的 截断不正确的整数值 错误 update tbl set projectNumber right comments 7 where createdBy me and length CONVERT
  • Swift - 将base64编码的图像上传到php并显示图像

    目前 我正在尝试将 base64 编码的图像上传到 php 服务器 然后该服务器将 base64 字符串存储在 MySQL 数据库中 目前 代码正在上传数据并将其存储到MySQL数据库中 但是 当我尝试通过指定用于检索图像的 URL 来检索
  • 如何为 Sublime Text 2 编辑器安装插件?

    How to 安装插件到 Sublime Text 编辑器 我想安装埃米特插件到 Sublime Text 2 编辑器 你应该有一个Data PackagesSublime Text 2 安装目录中的文件夹 您所需要做的就是下载插件并将插件
  • Elixir Phoenix 内联 CSS 用于发送电子邮件

    我正在使用凤凰城的 mailgun 库发送电子邮件 事实证明 当我查看 Gmail 帐户中的电子邮件时 它已被删除所有 css 类和外部 css 文件的链接 Mailgun 建议使用 css 内联库http blog mailgun com
  • 响应式更改 div 大小,保持宽高比 [重复]

    这个问题在这里已经有答案了 当我给图像指定百分比宽度或高度时 它只会增长 缩小 保持其纵横比 但如果我想要与另一个元素相同的效果 是否可以使用百分比将宽度和高度绑定在一起 您可以使用纯 CSS 来做到这一点 不需要 JavaScript 这
  • 在Python中如何处理可变类属性

    我正在执行以下 Python 代码 class Pet kind dog class variable shared by all instances tricks def init self name self name name ins
  • 如何允许使用操作栏导航选项卡进行水平选项卡导航(滑动视图)?

    我怎样才能允许水平选项卡导航 http developer android com training implementing navigation lateral html horizontal paging 滑动视图 如果我使用操作栏导
  • HtmlString 与 MvcHtmlString

    HtmlString vs MvcHtmlString 这两者之间有什么区别 或者什么时候更喜欢其中一种 Edit 更喜欢一件事MvcHtmlString over HtmlString是扩展方法IsNullOrEmpty of MvcHt
  • 显示包含 4000 多个字符的 CLOB 列

    我有这个 CLOB 列 我需要使用 select 语句显示它 I used DBMS LOB SUBSTR将其转换为varchar2 select DBMS LOB SUBSTR T1 CLOB COL 4000 1 CLOB COL fr
  • Angular js 分离到不同 js 文件中的不同模块 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了一个支持拖放元素的 Angular Web 应用程序 我完成了它的构建 但我有一个大模块 该模块放置在一个包含数千行代码的 js
  • 为什么 makefile 惰性评估会在“父”配方中找到文件,但找不到当前文件?

    这个问题是后续问题什么 makefile 惰性求值规则控制此行为 https stackoverflow com questions 64084461 what makefile lazy evaluation rule governs t