如何在D中开发一个库

时间:2014-05-26 18:11:18

标签: windows d dmd

您如何使用D语言开发库?

我想编写一个用于图像处理的简单库,然后我想在应用程序中使用它。

我正在寻找与Maven系统(构建,安装,在其他项目中使用)或任何其他包管理工具的Java JAR的类比。

我想知道的是

  • 如何设置项目(实际上是两个,lib和应用程序 - 它们是2个完全独立的项目)
  • 如何构建,安装,共享库
  • 是否有任何经验法则,符号的特殊可见性,命名空间约定等。

我之所以这样问是因为我不具备我在Java或C ++中所做的直觉。

  • 在Java中,你将一个lib编译成一个JAR,你很高兴。发送,分享,然后只包含在claspath上,你可以重复使用它。
  • 在C ++中编译它并提供头文件。 (或编译并动态链接到它)

那么D的故事是什么?

我使用Visual-D开发代码,但我也安装了DUB。

2 个答案:

答案 0 :(得分:3)

普遍接受的方法是使用dub,D的包管理器。

已经有很多可用的配音包: http://code.dlang.org/

另一种方法是简单地将您的包发布为git存储库,然后将其用作git子模块。这是我一直用于我的图书馆的方法。

答案 1 :(得分:1)

您可以通过设置target类型来进行配音,但我会以另一种方式显示。

使用MakefileForD

为什么?

因为dub将lib和bin安装到~/.dub。并且无法安装到共享目录。 例如Linux Filesystem Hierarchy Standard告诉二进制文件应该转到/usr/bin

无法尊重使用配音

使用Makefile共享lib,

创建项目

myproject
└── src
    └── myproject

将Makefile_lib安装到根目录并将其重命名为Makefile。

将command.make安装到根目录

您现在

myproject
├── command.make
├── Makefile
└── src
    └── myproject
        └── main.d

设置来源目录

Makefile文件的第5行

export REPO_SRC_DIR = src

<强>构建

现在你要做的就是:

make DC=dmd shared-lib

DC接受dmd ldc和gdc编译器

安装

make install

设置自定义安装目录

make install PREFIX=/usr LIB_DIR=/usr/lib64

对于仅相同的二进制文件而不是Makefile_lib,您需要使用Makefile_exe