问题标签 [dub]

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 回答
76 浏览

d - 是否可以在dub中为依赖项指定依赖项?

我正在尝试使用https://github.com/ParticlePeter/ErupteD

问题是我需要一个隐藏在版本后面的特定于平台的功能。该版本本身使用一个名为 的模块xcb-d,该模块不在该库的配音配置文件中。

https://github.com/ParticlePeter/ErupteD/blob/master/source/erupted/types.d#L3333

据我所知,xcb 没有配置https://github.com/ParticlePeter/ErupteD/blob/master/dub.json

我目前只是做

source/erupted/types.d(3335,16):错误:模块 xcb 位于无法读取的文件“xcb/xcb.d”中

是否可以为依赖项指定依赖项?

0 投票
1 回答
1216 浏览

d - D 的优化级别是多少?

dub下面构建优化二进制文件的升序是什么?(例如...调试<普通<发布...)

dub build -b release-nobounds似乎源自dmd -O -release -boundscheck=off,那么dub构建最快的可执行文件的等价物是什么?

0 投票
2 回答
93 浏览

d - 我可以指定最小 Dub 或 DMD 版本吗?

人们一直在尝试使用旧版本的 Dmd 和 Dub(0.9.2 而不是 1.0.0)来构建我的项目,但它不起作用。我可以在 dub.json 文件中指定所需的最低配音版本吗?

0 投票
1 回答
650 浏览

c++ - 使用 dub 输出 C++ 可链接静态库

我想将我的 D 库(使用 dub)与我的 C++ 应用程序静态链接。

我已按照wiki 上的说明成功手动链接示例。

但是,我有自己的使用 dub 的库,我不知道如何让它输出我链接到 using的内容cl


让我告诉你我的意思(来自 wiki 的示例代码,但添加了配音):

项目目录:

主.c:

libadd/dub.json:

libadd/source/libadd.d:


使用 wiki 中的说明编译和链接工作正常:

但是我如何用配音做到这一点?我注意到,虽然手动编译dmd会产生一个.obj,但dub会产生一个.lib. 根据谷歌教授的说法,.lib它是 Windows 上的一个静态库,但我无法链接到它。我已经设置targetTypestaticLibrary.dub.json

我还注意到dmd标志-m32mscoffdub.json-betterC中没有相应的设置。不过,我不确定如何补偿。buildOptions


如何将使用 dub 的 D 库与 C++ 应用程序静态链接?

0 投票
0 回答
258 浏览

raspberry-pi - 在 Raspberry Pi Zero W 上运行“dub”会给出“非法指令”

在我的 Raspberry Pi Zero 上全新安装 Raspbian 时,我曾尝试安装dub以构建应用程序以查看它是否在这台机器上运行。我从 dlang.org成功安装gdc并下载并提取了 ARM 版本。dub但是,每当我运行dub命令的任何变体时,它都会返回Illegal instruction而没有别的。

什么可能导致这种行为,以及可以采取什么措施来解决它?提前致谢!

0 投票
1 回答
1446 浏览

d - 配置 DUB 以使用 64 位编译器

如何配置 DUB 以将我的应用程序编译为 64 位可执行文件?这是我的 dub.json:

我尝试将此行添加到 dub.json:

但随后dub build输出:

所以我尝试用以下内容替换该行:

但收到此错误:

我在 Windows 10 上,安装了 DMD 2.074.0 和 Visual Studio 2015 和 2017。

0 投票
1 回答
518 浏览

d - D - 模块 main 位于文件“main.d”中,使用 DUB 编译时无法读取该文件

我有以下 dub.json:

我的文件夹中有我的main.d(带有基本的 hello-world-like 程序)src。如果我运行,dub build我会收到问题标题中提到的错误。如果我main.d从所在src的同一目录移动dub.json,错误就会消失。我非常希望将源代码保留在 中src,但这无法编译。我如何解决它?

我知道有两个问题:firstsecond,但情况与他们两个不同。在第一个中,未找到的模块是依赖项,这里不是这种情况。其次,编译是手动执行的,而不是通过 DUB 进行的(不过,我尝试将-Isrc编译器作为建议的问题的答案传递给编译器,但它没有帮助)。

我在 Arch Linux(64 位)和 LDC v1.2.0 上使用 DUB v1.3.0(但如果我使用 DMD v2.074.0,也会发生同样的情况)

0 投票
1 回答
270 浏览

d - 有没有办法自托管 DUB 注册表?

我正在为一个客户构建多个项目,它们往往具有我已将其分解为单独项目的通用代码。我正在尝试使用 DUB 来组织所有这些,但到目前为止,我不知道如何在不将这些常见项目添加为依赖项的情况下将它们发布到 github 之类的网站上并在 DUB 的公共注册表中注册它们。发布这些东西要么违反我的合同,要么将无趣的垃圾邮件放入 DUB 注册表(或两者兼而有之)。有什么方法可以在私有服务器上运行我自己的 DUB 注册表,并让它绘制所有常见的公共项目以及 LAN 可访问的 git repos 中的一些私有项目?

这将使我不必制作大量的 git 子模块。:)

谢谢。

0 投票
2 回答
421 浏览

d - 如何在 DUB 中进行配置,将具有主要功能的多个输入 D 文件转换为多个输出可执行文件?

我至少可以想到一些用例或场景:

  • 构建多个示例程序的“示例”配置。
  • 具有客户端程序和主机程序的项目。
  • 具有一个主程序和一些相关实用程序(例如:gcc)的项目。

更一般地说,如果项目有多个具有相同或相似依赖集的输出可执行文件,那么一次构建它们可能是有意义的。用户决定运行哪个可执行文件比弄清楚如何使 DUB 创建他们想要的可执行文件更容易(他们可能不是熟悉 DUB 的 D 开发人员)。作为一名 D 开发人员,这对我来说也很方便,因为我可以运行更少的构建命令来获得我想要的全部内容。

例如,我可能有这样的项目布局:

另一个项目可能如下所示:

在任一项目中,我都希望通过一次 DUB 调用来构建所有可执行文件。理想情况下,由于输入和输出的相互关联性,这一切都将通过一个 dub.json 文件进行管理。

似乎subPackages可能能够做到这一点,但从一个 dub.json 文件管理它“通常不鼓励”:

子目录 /component1 和 /component2 然后包含普通包,可以从外部项目中称为“mylib:component1”和“mylib:component2”。要引用同一存储库中的子包,请使用“*”版本说明符。

也可以在根包文件中定义子包,但注意是generally discouraged将多个子包的源代码放在同一个源文件夹中。这样做可能会导致对“依赖项”部分中未明确说明的子包的隐藏依赖项。这些隐藏的依赖关系可能会导致与某些可能难以理解的构建模式或依赖关系树相结合的构建错误。

如上所述,DUB 可以一次构建多个可执行文件吗?如果可以,最推荐的方式是什么?为什么?

0 投票
1 回答
608 浏览

d - 在 DUB 配置文件中,如何更改依赖项的配置(buildOptions)?

假设我有一个名为“myapp”的项目,它依赖于“sdlang-d”。我想使用dub build --build=release-debug命令行将我的项目构建为发布调试。由于SDLang 问题 #54,我无法将 sdlang-d 构建为 release-debug,因此我想使用我的 dub 配置文件强制 sdlang-d 构建为“debug”或“debugMode”,无论何时构建我为“myapp”选择的选项,然后将 sdlang-d 的调试版本链接到 myapp 的发布版本(以便我在 sdlang-d 之外的代码可以从优化中受益)。

出于测试目的,我在 github 上创建了一个名为“dub_dependency_config”的项目来模拟这种情况。在下面的文本中,我将提供从我尝试过的事情中观察到的具体输出,因此我将参考“ dub_dependency_config ”而不是“myapp”。

我从一个简单的 dub.sdl 配置文件开始...

...并尝试用 编译它dub build --build=release-debug,当然问题 #54 会做它的事情:

为了解决这个问题,我希望能够写出这样的东西:

我没想到这会真正起作用。文档中没有任何内容说它应该。无论如何我都试过了,dub 似乎忽略了buildOptions标签中的dependency标签。配置文件与之前的配置文件相同,我得到相同的问题 #54 编译器错误。

我已阅读有关subConfiguration的信息,这似乎是解决此问题的推荐方法,如该线程中所述。 subConfiguration给了我很多失败的配置来体验。让我们来看看几个:

这产生:

所以它无法理解我的意思,作为安慰奖,我收到一条我无法摆脱的唠叨信息;)

向前!

输出:

好吧,这很有趣,我们让它来构建……一些东西(我不知道是什么,但这不是我的程序)。

更多组合!让我们递归!

输出:

老马走了!但我认为这只是意味着我失败得更惨。

为了学习,我尝试了一些我知道不会起作用的方法,因为我希望从 subConfiguration 标记中获取任何信息:

不,我的错误尝试产生了错误的结果:

我如何使它工作?

(顺便说一句:我非常感谢 .sdl 格式。我在 .json 版本中遇到了同样的问题,只是缺乏评论能力就很难解决,更不用说文档了。)