问题标签 [vpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
133 浏览

makefile - make如何将'VPATH'传递给子make

非常感谢您的评论。在这种情况下实际上VPATH是不使用的。

我编写了一些 makefile 来递归地构建我的项目。

根目录中的部分makefile看起来像这样,

如您所见,我将变量传递VPATH给 sub- make,以节省一些计算成本。整个系统正常工作。

但是子目录中的搜索路径与根目录中的搜索路径不同。

我已经在 submake中打印了 VAPTH 的值,这些路径确实是相对于根目录的路径。所以 submake 中的 VPATH应该是错误的。

但整个系统工作。这是怎么发生的?任何人给我的建议。提前致谢

0 投票
1 回答
303 浏览

makefile - Make:利用 VPATH 编译和链接具有不同扩展名的文件

我有一个有点奇怪的 Make case,我正在努力弄清楚。我有一个 C++ 项目,我从一些 .cpp 文件开始,我需要从多个应用程序使用的多个远程目录编译一些源文件。这并不理想,但这是我的开发组使用的遗留目录/编译结构。

其他项目利用 VPATH 来实现这一点。然而,他们最终硬编码了需要链接的对象列表,这种方法对我来说似乎并不优雅或灵活。我想动态编译和链接所有内容。另一个潜在的复杂情况是,这些远程 VPATH 目录中的一些具有带有 .c 扩展名的文件(即使这些文件编译为 C++)而不是 .cpp。

我目前的解决方案:

结果是除了我的 VPATH 目录中的文件之外,所有内容都被编译和链接。我怀疑这可能是因为一旦我的 $(OBJ) prereq 被评估,结果对象本身都不位于 VPATH 中,只有源文件。

我可以采取更好的方法吗?我无法轻易更改这些远程 VPATH 目录的内容,因为它们被具有不同所有者的许多不同应用程序使用。

0 投票
2 回答
737 浏览

c++ - VPATH中的递归搜索?

我的 C++ 项目的源文件组织在./src. 我的 makefile 中有一个模式规则,它将所有.cpp源文件编译成对象:

由于我使用的是这种模式而不是为每个源文件编写编译规则,因此我需要告诉make递归地./src查看这些先决条件。现在我有:

VPATH := $./src/:./src/folder1:./src/folder2:./src/folder3

这行得通,但是当我不可避免地忘记添加新文件夹时,它感觉很不雅,并且还会导致错误。

希望有人有更好的解决方案!

0 投票
1 回答
93 浏览

c - 使用 vpath 查找生成的文件

我正在尝试编写一个将 a 编译*.c为 an*.o然后将其移动到obj/. 但是,当我尝试链接中的所有*.o文件时,main我收到一个错误,就好像找不到生成的文件一样。我试图用正确的路径为代码添加前缀,但无论如何它都找不到。有没有人知道我需要对我的代码进行哪些更改才能找到*.o文件。这是我的 Makefile:

欢迎任何建议。我读过不建议使用 vpath 来查找生成的文件。但这是一项任务,我必须以这种方式使用它。如果我取消注释这两行并注释%.o规则中的最后两行,代码效果很好,但我不能这样做。这是执行时的错误:

0 投票
1 回答
153 浏览

makefile - vpath 没有拾取新建的对象

我有这个 Makefile(和 GNU Make):

但是构建(没有任何子目录或对象存在)给了我这个:

很明显,由于既不存在symbol.o也不symbol_test.o存在,因此需要构建它们。并且它们正确放置在 subdir 中./objs

但是当“链接”时,vpath不会在.o子目录中选择新创建的文件.objs

这不是很奇怪吗?再次运行make给出:

在我看来,为了触发在子目录中的搜索,它们在被调用.o时必须存在。make那种违背目的的vpath,不是吗?

还是我Makefile的理解有问题vpath

注意:在 vpath 指令中包含 $(OBJDIR) 不起作用。为什么?

0 投票
0 回答
21 浏览

makefile - Makefile重新链接问题

我试图调整我的标准 makefile 以包含 vpath。我让它按我的意愿工作,但它现在一直在重新链接。有人知道我在做什么错吗?这与我对 vpath 的使用有关吗?

我的makefile的相关部分:

项目文件夹结构(简化):

非常感谢!