1
1
如果我理解得很好,您需要删除所有名为:
在哪里?
因为制作食谱只是空壳,你不需要
但是在运行这个潜在的危险规则之前,您应该使用这个规则,直到您满意为止:
唯一的区别是它会在删除文件之前要求您确认。我们还可以让这一切变得更容易:
根据需要使用一个或另一个目标:
编辑1 :如果这是关于循环和make的练习,请记住make配方是shell脚本(每行一个),首先由make扩展,然后传递给shell。所以:
在下面,我假设您没有带有空格或特殊字符的目录或文件名。如果你这样做了,是时候问一个关于你的贝壳的问题了。 因此,例如,使用bash shell,我们可以首先构建一个目标目录数组,然后循环它们以删除文件:
编辑2 :您也可以将内置的make循环系统与一个(假的)一起使用。 清洁的 每个目录的目标。
棘手的部分是:
规则。它相当于每个规则
在哪里?
这种样式相对于shell循环的主要优点是make可以并行运行所有配方。如果你有上百个
你会看到不同。 |
2
0
简而言之,你不能这样做。 在编写makefile配方时,必须清楚了解它们的工作原理:首先,make将扩展所有make变量和函数。然后,make将把生成的字符串传递给要运行的shell。最后,make等待直到shell完成并检查退出代码,以确定它是否成功。
这里你想用贝壳
考虑一下您希望make(和shell)执行的操作:shell将运行其for循环,然后每次执行循环体时,它都会进行通信以生成某个shell变量的值,make将使用该变量展开make通配符函数,然后将结果返回给shell进行更多处理。这根本不可能。
最好是用
壳
构造。一个好的经验法则是,使用make的方法从来不是一个好主意。
我写这个是:
注意我们逃走了
|
Darky · 多重定义…c++vsCode[重复] 2 年前 |
Jim Merkel · 软件包管理器如何知道在哪里安装文件 2 年前 |
franco yang · makefile中的循环main 2 年前 |
dopller · 使用cmake将仅标题库包含到我的项目时出错 2 年前 |
Andres Moreno Abrego · 为什么当BOOL_VAR为false时,Makefile表达式“export INTEGER_VAR?=$(if$(BOOL_VAR),2,5)”会导致INTEGER_VAR=2? 2 年前 |
miterhen · 发生错误后,如何继续中断编译? 6 年前 |