我正在修改一个共享库。我将目录的内容复制到一个新的同级目录并在整个库上运行 Make。但是,我收到以下错误:
Make: *** No rule to make target /opt/orchestra/tests/ToolsNew/Makefile’, needed by ‘Makefile’. Stop.
为什么可以制作的目录副本不能制作?
有点困惑,您正在寻找 :: 的答案
如何确定哪个 Makefile 以给定文件为目标?或者为什么可以制作的目录副本不能制作?
第一个问题:它似乎是新的品牌副本,但如果您仍有疑问....
检查您触发命令的位置....路径,如果未指定文件名,则默认情况下make会在当前目录中查找描述符 - 这是运行命令的位置...
或者
如果在同一个目录中有两个或多个外观相似的makefile,您不确定使用了哪个,例如:makefile 和Makefile,那么您可以检查.MAKEFILE_LIST——它包含每个由makefile 解析的makefile 的名称make in general ,因此您可以在此处获得名称和查找它们的顺序。
检查方法::
make -p < /dev/null | 三通 MAKE_P.TXT
(注意:-p 选项会列出 make 的所有设置 .... 文件会很长)
这应该可以帮助您找到正在使用的描述符生成文件。
第二问:
从您的编辑看来,真正的问题是:无法粘贴 Makefile,因为它位于我现在无法访问的 VM 上。– RouteMapper 16 小时前
我会检查代码......调用可能就像......
cd $(proj_dir) && $(MAKE) ;
如果您在此处使用较旧的 $(proj_dir) 值,即 /opt/orchestra/tests/Tools ,即使您无法复制较旧的 Makefile 也可以使用它,在运行期间它将使用您拥有的当前环境设置.... ..我认为它应该工作!
希望这可以帮助 !!让我知道您是否需要其他东西?
原因可以在输出中找到。注意它是如何抱怨文件的/opt/orchestra/tests/ToolsNew/Makefile
?基本上,警告是告诉您文件丢失,并且您没有定义生成新副本的 Make 规则。
您应该验证该文件是否存在,我敢打赌它不存在。