问题标签 [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 投票
1 回答
1225 浏览

makefile - 如何在make中匹配vpath后获取绝对路径?

我有一个 makefile,它根据某些属性设置 vpath 并将源文件列表生成到一个变量中。我需要在不编译任何东西的情况下运行makefile(编译实际上由不同的makefile处理),并且只需根据vpath设置查看文件名与哪些真实文件匹配。

0 投票
1 回答
8540 浏览

makefile - 使用 VPATH 和包含的 Makefile 诡计

我正在玩弄制作文件和 VPATH 变量。基本上,我从几个不同的地方(由 VPATH 指定)获取源文件,然后使用我想要的 .o 文件列表将它们编译到当前目录中。

到目前为止一切顺利,现在我将依赖信息生成到一个名为“.depend”的文件中,并将其包括在内。如果包含文件不存在,Gnmake 将尝试使用到目前为止定义的规则来创建包含的文件,所以没关系。基本上,我的 makefile 看起来像这样。

现在对于真正的问题,我可以以任何方式抑制 .depend 文件的生成吗?我目前正在一个 clearcase 环境中工作-> sloooow,所以我希望在更新依赖信息时对其进行更多控制。

这或多或少是一个学术练习,因为我可以在执行 make 之前将它包装在一个触及 .depend 文件的脚本中(从而使其比任何源文件都更新),但如果我能以某种方式知道它会很有趣使用“纯”制作压制它。

我无法删除对源文件的依赖(即简单地使用.depend:),因为我依赖于$^变量来为我做 VPATH 解析。

如果有任何方法可以仅因更新#include指令而更新依赖项,那当然会更好..但我并没有为此屏住呼吸.. :)

0 投票
1 回答
382 浏览

makefile - 使用 GNU make 和 VPATH 查找依赖项时最后搜索当前目录

这是一个 GNU Make 依赖解决问题。

我的问题是我将源文件从远程文件服务器复制到暂存盘(这将构建过程加快了 50%)。如果文件复制失败,我想使用文件服务器中的源文件,否则我想从暂存盘中读取它们。

我曾尝试使用 vpath 机制,但问题是,据我了解,make 默认会开始在当前目录中查找源文件,并且只有在无法找到那里的文件时,才查看目录与 vpath 一起列出。

在查看当前目录之前,是否可以先查看 vpath 目录?或者也许只查看 vpath 目录(并显式动态地将当前目录添加到 vpath)?

我能想到的唯一方法是临时更改目录,以便 make 始终无法找到源文件。

0 投票
1 回答
380 浏览

makefile - 制作和 VPATH。为什么我的源文件放在我不想要的地方?

我正在尝试使用 make 进行编译。我在两个目录中有源代码,src 和 altsrc。我想先在 altsrc 中查找源文件,然后在 src 中查找。我希望对象进入目录 obs。我的 Makefile 的相关部分如下所示: VPATH=altsrc:src:obj

这个 Makefile 实际上可以编译代码,但它有一个非常令人讨厌的副作用:它找到每个源文件(并且有很多)并将它们从 altsrc 或 src 复制到我正在运行的目录中 make。这真的很烦人,并在以后导致一堆混乱。我在任何地方都没有找到任何说明这应该是 VPATH 宏的影响的文档。谁能告诉我如何解决这个问题?谢谢。

0 投票
1 回答
1386 浏览

build - 如何使目标依赖于 lib 文件,但将其从 $^ 中排除(涉及 VPATH)?

想象一下这个结构:

tests/中,该文件夹common/包含几个源文件,它们生成数据或从记录的文件中读取数据等,这些文件在所有测试之间共享。因此,每个测试只有一个文件;main.c(目前)。每个Makefile测试的看起来像这样:

起初我common/在每个测试中都复制了文件,一切都很好,但现在我把它们放进去common/使用了VPATH,我遇到了一个问题。

让我解释几行:

正如您可能已经猜到的那样,由于common/*.o文件不在此文件夹中,因此$(LD)无法找到它们。另一方面,make, givenVPATH = ../common找到它们没有问题。如果我可以删除../../lib/libname.a,然后使用$^,我可以提供目标文件的正确路径。

然而,删除对 lib 文件的依赖意味着当我make处于顶层时,如果仅更新 lib 本身,测试将不会得到更新。

所以,我的问题是,如果make其他依赖项是使用VPATH?

我考虑过删除依赖项,并在Makefilethat buildslibname.a中,在创建库后添加一个命令,告诉Makefile测试的 s 删除它们TARGET的 s:

这将迫使$(LD)他们再次制造。然而,这种解决方案往往会使Makefile关系变得一团糟。Makefile构建 lib 与是否有测试无关,我更喜欢将它们解耦。


我进行了很多构建和测试,这就是为什么我尝试完成依赖项,以便make采取尽可能少的操作来正确构建所有内容。说,每次都清理和重建的解决方案不是一种选择。

我也知道这种语法,如果我想将 lib 文件目录提供给gcc,而不是使用-Lpath/to/lib -lname. 但是我不确定这是否是一个好主意(我的意思是,我总是看到与 链接-L,我不确定直接提供库文件是否有缺点)

顺便说一句,如果我做错了什么,或者我让自己太难了,请告诉我应该如何正确地做到这一点。

0 投票
1 回答
1181 浏览

makefile - VPATH 不适用于 Makefile 规则

我在 Makefile 中添加了另一条规则,以尝试构建一个 C 共享库,该库使用 SWIG 使用 JNI 为 Java 包装函数

附加规则如下所示(基本上来自 SWIG java 示例之一)

我遇到的问题是我的 VPATH 似乎不再适用于 *.c 文件

我注意到此规则导致所有 .c 文件编译为对 gcc 的一次调用,而不是对 gcc 的单独调用以编译每个 .o 文件

我以前没有任何 JNI 东西的编译规则如下所示:

这些与VPATH一起工作没问题

我的 VPATH 语句如下所示:

0 投票
1 回答
358 浏览

android-ndk - 将 VPATH 与 ndk-build 一起使用

目前正在尝试将 a 移植Makefile到一个Android.mk文件中,以便我可以使用它构建一个共享库ndk-build

我似乎无法让 VPATH 做任何事情。

例如

工作正常,但试图剥离目录部分并指定一个 VPATH 而不是,例如

no such file or directory error在跑步时得到一个ndk-build

我是否认为您应该能够在 Android.mk 文件中使用标准的 GNU Make 语法?不知道为什么这不起作用...

0 投票
1 回答
82 浏览

autoconf - autoconf:使用 AS_INIT_GENERATED 在子目录中生成脚本

如何使用AS_INIT_GENERATE生成与脚本不在同一目录中的configure脚本,特别是这样 VPATH 构建将得到尊重?

例如,对于configure.ac包含

运行命令

导致错误消息

我想我必须在调用create之前确保该src目录存在,或者我做错了?AS_INIT_GENERATEsrc/file.sh

0 投票
1 回答
137 浏览

makefile - vpath 问题 - 没有得到我的假设

我的 vpath 设置如下:

现在,如果我想获取要创建的目标文件列表,它不应该与以下内容一起使用吗?

它不是。运行命令时我没有得到任何文件列表

如果我执行以下操作,它只会显示目标文件列表:

有什么解释吗?

0 投票
1 回答
213 浏览

c++ - 使用 vpaths 时需要“make”两次

过去 2 年左右我一直在编程,我终于“摆脱了控制台”,但是当我这样做时,我也想独立于 IDE,因此,我一直在学习 make 但是这是一个问题,我似乎无法找到有关“vpath”的答案

这是我的makefile:

当我第一次使用 make 时,我得到了这个结果:

我需要再次使用 make 来让程序链接。这是为什么 ?我应该不使用“vpaths”这也是我在第二次制作中得到的:

(成功)