C++ 如何确定哪个Makefile以给定文件为目标?

C++ 如何确定哪个Makefile以给定文件为目标?,c++,makefile,C++,Makefile,我正在修改共享库。我将一个目录的内容复制到一个新的同级目录,并对整个库运行Make。但是,我收到以下错误: Make:**“Makefile”所需的target/opt/chestration/tests/ToolsNew/Makefile无规则生成。停止。 为什么一个可以很好地复制的目录不能被复制?原因可以在输出中找到。注意它是如何抱怨文件/opt/chestration/tests/ToolsNew/Makefile?基本上,警告告诉您文件丢失,并且您没有定义生成新副本的生成规则 您应该验证

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

Make:**“Makefile”所需的target/opt/chestration/tests/ToolsNew/Makefile无规则生成。停止。


为什么一个可以很好地复制的目录不能被复制?

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


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

有点困惑,您正在寻找以下问题的答案:

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

第一个问题:这似乎是该品牌的新版本,但如果您仍有疑问

检查您在何处启动命令。。。。路径,如果未指定文件名,则默认情况下make查找 当前目录中的描述符--该命令是在该目录中运行的

如果在同一目录中有两个或多个外观相似的makefile,则不确定使用了哪一个 例如:makefile和makefile然后您可以检查.makefile_列表——它包含make通常解析的每个makefile的名称,因此在这里您可以得到名称以及它们的查找顺序

检查的方法::
make-p (注意:-p选项将列出make的所有设置…文件将是一个文件,但很长)

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

第二个问题:

从你的编辑看来,真正的问题是:无法粘贴Makefile,因为它位于我现在无权访问的VM上16小时前的RouteMapper

我会签入代码。。。。。。电话可能是

 cd $(proj_dir) &&  $(MAKE) ;
如果您在此处使用较旧的$(proj_dir)值ie/opt/chestration/tests/Tools,即使您无法复制较旧的Makefile,您也可以使用它,在运行期间,它将使用您拥有的当前环境设置。。。。。。我认为它应该有用

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

hmm,可能是权限问题?原始目录的完整路径是什么?新复制目录的完整路径是什么?你能粘贴到Makefile本身吗?旧目录:/opt/chestration/tests/Tools。新建目录:/opt/orchestra/tests/toolsnew无法粘贴到Makefile中,因为它位于我目前无权访问的VM上。是否是副本丢失了该案例?如果你
ls-l/opt/chestration/tests/ToolsNew
,也许我们可以看到
makefile
?我猜您使用的是linux虚拟机,但可能Windows参与了将工具复制到ToolsNew?