![]() |
1
11
我也相信这是GNU做的具体,但我不太确定。 |
![]() |
2
8
(如果您有任何问题,请参考 GNU make manual .但请记住,与makefile一样,在将概念付诸实践之前,应该完全阅读本手册)。 我想不出这是怎么容易做到的。据我所知,你得做些体力活。
稍后,我将描述如何完成这项工作,并展示介绍
你应该理解如果我们有某种变量
例如,如果您想在规则文本中使用这个变量,就必须进行一些技巧,因为规则文本总是延迟了扩展。所以,如果你有规则的话
它将始终打印根makefile的名称。相反,要强制立即扩展,必须使用makefile特定的名称(即 这些变量的名称在每个makefile中应该是不同的 ):
或使用EVA:。
如果只想将当前生成文件的名称用于调试目的,请考虑特殊的调试功能,如警告或信息:。
这些函数使用“立即”扩展,并将打印正确的值。 如何定义这样一个$(当前的生成文件)? 您必须手动维护makefile包含的堆栈。当您包含一个生成文件时,它的名称将被放在堆栈的顶部;当您从包含的生成文件返回到外部时,最顶部的名称将从堆栈中弹出。这是通过在makefile的开头和结尾插入特殊调用来实现的:
现在在根makefile的开头定义函数。
如果您确定您的品牌足够新(3.81以上版本),请更换
有用吗? 完全没用。这里唯一有用的方法是制作100个makefile,这些makefile中的规则取决于它们的名称,这些makefile是到一个makefile的符号链接。但是它可以在手册中描述的一个makefile和foreach eval技术中实现。所以我的帖子完全是在浪费时间,尽管我有一些乐趣:—) |
![]() |
3
3
|
![]() |
4
2
当我使用make来管理简单的重复性任务时,我想做一些类似的事情(用于回显makefile的内容)。我翻过这一页,发现它正是我所追求的,对我对make有限的理解非常有用。 我阅读此页后的结果:
|
![]() |
5
1
这将返回被调用的第一个makefile的名称,即位于调用堆栈底部的名称:
在非交叉递归情况下使用时(例如,对于makedepend e),它只是当前makefile的名称。 |
![]() |
6
0
G'Day. 如果要复制原始makefile,请说makefile_test,然后输入命令:
这将评估makefile和make环境,但不执行任何命令。在输出文件中查找make file测试的引用将显示make环境中设置的内容以及设置该值的位置。 注意,这会产生很多信息!不要添加-d(debug)开关,它将生成关于make的决策过程的大量额外输出,但是关于make的env的额外信息最少。 高温高压 |
![]() |
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 年前 |