gpt4 book ai didi

makefile - make - 模式规则目标被错误地视为中间对象

转载 作者:行者123 更新时间:2023-12-03 06:44:35 24 4
gpt4 key购买 nike

我有一个 makefile 可以执行以下操作:

.INTERMEDIATE: gen0.tmp gen1.tmp
.PHONY: %_test
%_test: tests/%.so
ln -fs $< test.so
tests/%.so: gen.o test_src/%.c
cc -shared $^ -o $@
gen.c: gen0.tmp gen1.tmp
cat $^ > $@
gen%.tmp:
seds and awks and non-relevant stuff

据我了解 make 的文档,所有从隐式规则创建的文件都被视为中间文件,但对于模式规则而言并非如此,但无论我使用 % 创建什么 .so _test 规则将与其他中间文件一起删除,除非它在调用 make 之前就已存在。这里出了什么问题?

还有

.SECONDARY: tests/%.so

不起作用并且

.SECONDARY:

确实如此,但是明确标记为 .INTERMEDIATE 的目标不会被删除,而且我不认为将我的主要目标标记为 .SECONDARY 是一个好的做法。

PS:我使用make版本3.81

最佳答案

我不明白你的说法所有从隐式规则创建的文件都被视为中间文件,但对于模式规则则不然

模式规则一种(类型)隐式规则。绝对是这样的情况:由于模式规则而创建的目标可以被视为中间目标。

关于makefile - make - 模式规则目标被错误地视为中间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31310666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com