Windows 如何在D中开发图书馆

Windows 如何在D中开发图书馆,windows,d,dmd,Windows,D,Dmd,您将如何用D语言开发库 我想为图像处理编写一个简单的库,然后在应用程序中使用 我正在寻找Java的JAR与Maven系统(构建、安装、在其他项目中使用)或任何其他包管理工具的类比 我想知道的是 如何设置一个项目(实际上有两个,lib和app,它们是两个完全独立的项目) 如何构建、安装和共享库 是否有经验法则、符号的特殊可见性、名称空间约定等 我之所以这样问是因为我没有java或C++的直觉。 在Java中,您可以将一个库编译成一个JAR,这样就很好了。发送它,共享它,然后将其包含在CLAP

您将如何用D语言开发库

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

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

我想知道的是

  • 如何设置一个项目(实际上有两个,lib和app,它们是两个完全独立的项目)
  • 如何构建、安装和共享库
  • 是否有经验法则、符号的特殊可见性、名称空间约定等
我之所以这样问是因为我没有java或C++的直觉。
  • 在Java中,您可以将一个库编译成一个JAR,这样就很好了。发送它,共享它,然后将其包含在CLAPSATH中,您可以重用它
  • 在C++中编译并提供头文件。(或编译它并动态链接到它)
那么D的故事是什么


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

您可以通过设置类型使用DUB来实现这一点,但我将展示另一种方法

通过使用

为什么?

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

您不能使用dub来遵守此标准

与Makefile共享lib

创建一个项目

myproject
└── src
    └── myproject
将Makefile_lib安装到根目录中,并将其重命名为Makefile

将command.make安装到根目录中

make install PREFIX=/usr LIB_DIR=/usr/lib64
您现在有了

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

通常接受的方法是使用dub,这是一个用于D的包管理器

已经有很多dub软件包可用:


另一种方法是简单地将包发布为git存储库,然后将其用作git子模块。这是我在库中使用的方法。

应该可以在windows上使用。事实上,对于windows来说,这一切都取决于gnu makefile的支持如何。所以我需要让
make
可用于
cmd.exe
?如果我
make
library,我是否也需要分发一些标题?要将“make”放入cmd.exe,需要编辑var%PATH%。您需要为将调用您的库的开发人员分发标题。它仍然没有回答问题,因为它没有解释您需要将“应用程序”项目链接到库中的内容!。它需要完整的库源代码吗?存在一些类似于C++的头文件吗?或者编译器可以解析库文件中的符号?在LDC、GDC和DMD?D中,同样是.DI文件,相当于.C++中的H。您可以提供.d或.di来链接和构建项目。符号不是交叉编译器兼容的,因为我说过dub适合个人使用,但当您想要分发和打包它时,您不能使用它。如何使用dub将新工具添加到正式的linux发行版中?这似乎在他的时间是不可能的,因为dub不遵循FHS。谢谢。我可以和dub相处,但是你能详细说明一下项目的设置吗?例如,如何准备一个项目,我应该创建一个二进制+头文件,还是只创建二进制文件就足够了?你有什么在线推荐的文章吗?我想最好从dub开始。按照链接获取更多信息。它仍然没有回答问题,因为它没有解释将“应用程序”项目链接到库中需要什么!。它需要完整的库源代码吗?存在一些类似于C++的头文件吗?或者编译器可以解析库文件中的符号?在LDC、GDC和DMD中是否相同?