如何在D中开发一个库

Bin*_*hel 6 windows d dmd

你会如何用D语言开发一个库?

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

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

我想知道的是

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

我问这个是因为我没有Java或C++的直觉.

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

那么D的故事是什么?

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

bio*_*ics 2

您可以通过设置目标类型来使用 dub 来完成此操作,但我将展示另一种方法。

\n\n

通过使用MakefileForD

\n\n

为什么 ?

\n\n

因为 dub 将 lib 和 bin 安装到~/.dub. 并且无法安装到共享目录。\n例如Linux 文件系统层次结构标准告诉二进制文件应该转到/usr/bin.

\n\n

不能通过使用 dub 来尊重这个标准。

\n\n

与 Makefile 共享库,

\n\n

创建一个项目

\n\n
myproject\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myproject\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

将command.make安装到根目录

\n\n

你现在有

\n\n
myproject\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 command.make\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myproject\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.d\n
Run Code Online (Sandbox Code Playgroud)\n\n

设置源目录

\n\n

Makefile 文件的第 5 行

\n\n
export REPO_SRC_DIR = src\n
Run Code Online (Sandbox Code Playgroud)\n\n

建造

\n\n

您现在所要做的就是:

\n\n
make DC=dmd shared-lib\n
Run Code Online (Sandbox Code Playgroud)\n\n

DC接受dmd ldc和gdc编译器

\n\n

安装

\n\n
make install\n
Run Code Online (Sandbox Code Playgroud)\n\n

设置自定义安装目录

\n\n
make install PREFIX=/usr LIB_DIR=/usr/lib64\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n