- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
&2; cat ta-6ren">
我希望能够在 GNU make 的另一个规则的先决条件中使用在一个规则中创建的目标的结果。例如:
PREREQ = $(shell echo "reading target1" >&2; cat target1)
target1:
echo "prereq" > $@
target2: target1 $(PREREQ)
echo foo > $@
target2
应该依赖于从 target1
文件中读取的 prereq
,但直到 target1
配方被执行。
当然,这是一个非常人为的示例,我确信有很多关于如何重构这个特定示例的建议,但我不打算重构这个示例。这只是我的更复杂问题的一个简化示例,我需要从一个文件的内容中获取先决条件,该文件直到执行 Makefile
中的配方才被创建。
问题是,[如何]扩展 $(PREREQ)
(因此 $(shell cat target1)
的执行推迟到target1
规则实际执行了吗?
更新:我尝试了 .SECONDARYEXPANSION:
但这似乎无法完成工作:
$ make -d target2
...
reading target1
cat: target1: No such file or directory
...
Updating goal targets....
Considering target file 'target2'.
File 'target2' does not exist.
Considering target file 'target1'.
File 'target1' does not exist.
Finished prerequisites of target file 'target1'.
Must remake target 'target1'.
echo "prereq" > target1
[ child management ]
Successfully remade target file 'target1'.
Finished prerequisites of target file 'target2'.
Must remake target 'target2'.
echo foo > target2
[ child management ]
Successfully remade target file 'target2'.
如您所见,“reading target”在一开始只打印了一次,表明 PREREQ
由于 .SECONDEXPANSION:
和列表而没有再次展开考虑target2
的目标不包括prereq
。
最佳答案
延迟扩展先决条件$(PREREQ)
可以通过有条件地创建target2
并依赖递归来实现:
ifndef expand-prereq
target2: target1
$(MAKE) --no-print-directory -f $(lastword $(MAKEFILE_LIST)) $@ expand-prereq=y
else
target2: target1 $(PREREQ)
echo foo > $@
endif
make
第一次为此 makefile 运行时,变量 expand-prereq
未定义,因此生成第一个 targe2
规则作为条件的结果。这种虚拟规则可以在不扩展 $(PREREQ)
的情况下更新 target1
。匹配此规则会导致更新 target1
(因为 target1
是此规则的先决条件)并且 递归调用 make
对于相同的 makefile 并使用 target2
作为目标。
第二次 make
被(递归地)调用,变量 expand-prereq
是通过命令行参数 expand-prereq=y 定义的
,所以第二条target2
规则是这次else
分支的结果。此规则是实际生成目标 target2
的规则。请注意,在匹配此规则之前,target1
已作为第一个虚拟规则的副作用创建,因此 $(PREREQ)
的扩展发生在 target1
已创建(您正在寻找的内容)。
关于makefile - 将先决条件扩展推迟到(不同的)目标创建之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49286398/
我的代码有问题。它总是忽略if(userDigit=1).. 谁能告诉我这里出了什么问题? for(i=0; i=1) { //
我正在尝试从字符串 html_doc 中提取 id=obj1 并尝试将 onclick 函数 附加到它 document.addEventListener("DOMContentLoaded", fu
我正在尝试使用 css 动画来动画化从一个类到另一个类的变化。基本思想是在用户单击按钮时为从一个边缘滑动到另一个边缘的 slider 设置动画。 到目前为止我的代码。 https://jsfiddle
我目前面临使用前后伪元素淡入导航项的问题。 当我悬停导航项时,它必须将其背景颜色从白色更改为蓝色。没什么疯狂的。但它也必须显示两个背景图像,分别通过将::before 伪元素从 0 更改为 1 和::
有没有简单的方法可以在最近的sqlite版本中修改表,使其与预定义的架构匹配? 架构: war_id INTEGER NOT NULL, clanname VARCHAR(64), clanhomep
我该如何将我的搜索结果变成这样的: http://i.stack.imgur.com/NfPGs.png 结果显示特定术语在单元格中的位置。 我目前有这个基本的搜索脚本: $terms =
我正在尝试使用按钮创建输入字段。但我想要的是,当创建输入字段时,我想用相同的按钮隐藏创建的输入字段。我尝试了 slideToggle 函数,但效果不是很好。 $('#addEmail').one('
我想做这样的事情: Reference of image. 我所做的:两个 UIImagesView,一个带有 UIViewContentModeLeft,另一个带有 UIViewContentMod
我在使用应该修复表中列的插入触发器时遇到了问题: id - auto increment int thread_id - int [NULL] 我想要实现的是将 thread_id 设置
我使用 tinter.after() 每 200 毫秒 刷新一次树莓派上模拟时钟的显示。一开始还可以,但逐渐地,每次刷新之间的时间达到大约 2-3 秒。是否有任何解决方案可以将刷新间隔保持在 200m
我有一个按钮,它使用::after 伪来填充背景。目前它从左到右填充,这在宽度从 0 到 100% 时有意义。但是,我希望它翻转它填充的方式。 a.project--link { margin:
我正在尝试添加带有伪元素:after的下划线来注释一些文本。 我的问题是,我想强调下划线。在此示例中,这是短语“实际上确实可以...”和“ ...不起作用”。 .test { margin-top
鉴于此: This is a test It is 有没有我可以应用到 的 CSS?那它会出现在“This is...”之前,并且在 PREVIOUS LINE 之前吗? float:left; d
我正在使用链接左侧的图像。 现在,我使用图像的::before 属性来显示,但它显示在链接的上方。 我需要对齐它。这是一张照片: Link 我使用的代码是: .vocabulary-duration
我有一个页脚有 与 6 body {background:#bbb;} .main-footer a::after { content: " | "; color: white; mar
我有一个父元素和一些子元素,但我不能直接更改它们的 CSS。所以,我试图在父元素的 CSS 中更改我 child 的 CSS。示例: .parent { & .child {
我可以 div:after { content: "hello" } 但我能否为 hello 文本添加标题,以便当我用鼠标悬停它时显示标题? 谢谢 最佳答案 你不需要伪元素: p { ba
CSS 2.1 :after 和 CSS 3 ::after 伪选择器(除了 ::after 旧浏览器不支持)?是否有任何实际理由使用更新的规范? 最佳答案 这是伪类与伪元素的区别。 除了 ::fir
「掏出钥匙开门,然后在黑暗中摸索着墙壁开关的位置,最后将室内的灯点亮。」 这是一个星期之前,我每天晚上下班回家时的固定戏码,也可能是大部分人每天回家时的经历。这种「一对一」的日常琐碎还有许多许
我正在尝试包装 , ,和具有 的元素修复我无法直接编辑的表单上的某些定位。由于某种原因,当我尝试使用以下代码时: $("label").before(""); $("input[type=tex
我是一名优秀的程序员,十分优秀!