如何确定哪个Makefile针对给定文件

How to determine which Makefile is targeting a given file?

本文关键字:文件 Makefile 何确定      更新时间:2023-10-16

我正在修改一个共享库。我将一个目录的内容复制到一个新的同级目录,并对整个库运行Make。然而,我收到以下错误:

Make: *** No rule to make target /opt/orchestra/tests/ToolsNew/Makefile’, needed by ‘Makefile’. Stop.

为什么一个目录的副本可以做的很好却不能做呢?

有点困惑,你正在寻找::

的答案

如何确定哪个Makefile是针对给定的文件?或为什么一个可以制作的目录的副本不能制作呢?

第一个问:这似乎是新的副本,但如果你仍然有疑问....

检查在哪里启动命令....如果没有指定文件名,那么默认情况下,make将查找当前目录中的描述符——即命令运行的位置…

如果在同一目录中有两个或更多相似的makefile,则不确定使用了哪个例如:makefile和makefile,那么你可以检查. makefile_list——它包含了make通常解析的每个makefile的名称,所以在那里你得到了名称和它们被查找的顺序。

检查的方法::
Make -p

(注意:-p选项会列出make ....的所有设置该文件将是一个(但很长)

这将帮助您找到正在使用的描述符makefile。

第二个Q:

从我们的编辑看来,真正的问题是:不能粘贴Makefile,因为它位于一个虚拟机,我现在没有访问权限。- RouteMapper 16 hours ago

我会检查代码......Call可以是......

 cd $(proj_dir) &&  $(MAKE) ;

如果你在这里使用旧的$(proj_dir)值ie/opt/orchestra/tests/Tools,即使你不能复制旧的Makefile,你也可以使用它,在运行期间它将使用当前的环境设置......我认为它应该有效!!

希望这有帮助!!如果您还需要什么,请告诉我。

原因可以在输出中找到。注意它是如何抱怨文件/opt/orchestra/tests/ToolsNew/Makefile的?基本上,该警告是告诉您文件丢失了,并且您没有定义Make规则来生成新的副本。

你应该验证这个文件是否存在,我敢打赌它不存在。