Module D开发过程

Module D开发过程,module,d,packages,libraries,dmd,Module,D,Packages,Libraries,Dmd,对于使用从github克隆并单独构建的包的D程序,建议的开发过程是什么 通常与如何使用make、autotools、cmake等构建C/C++项目有关 大多数其他构建规范都有安装目标。是否应该在构建中有一个安装目标,或者我们应该直接从构建库时放置的位置链接库,并在D\u INCLUDE\u PATH中注册它的INCLUDE,然后使用DFLAGS=-I直接指向它们?我意识到我的评论实际上可以回答这个问题,因此它是: 在C或C++世界中,P>D的开发过程不能与相似性不同。这真的很难看到吗?几乎所有的

对于使用从github克隆并单独构建的包的D程序,建议的开发过程是什么

通常与如何使用make、autotools、cmake等构建C/C++项目有关


大多数其他构建规范都有安装目标。是否应该在构建中有一个安装目标,或者我们应该直接从构建库时放置的位置链接库,并在
D\u INCLUDE\u PATH
中注册它的INCLUDE,然后使用
DFLAGS=-I
直接指向它们?

我意识到我的评论实际上可以回答这个问题,因此它是:

在C或C++世界中,P>D的开发过程不能与相似性不同。这真的很难看到吗?几乎所有的C和C++编译器都生成“原生”代码。D也不例外。曾经有一个D.NET项目可以以.NET为目标,但它已经多年没有活动了

此外,基于C/C++的项目中使用的所有工具都可以轻松地用于其他任何事情。CMake也可以用于Java或.NET项目。Make和/或Autotools也一样。为什么Maven和Ant在Java世界更受欢迎是另一回事

说到它们,您可以在D开发过程中使用Maven或Ant!简单来说,您需要编写自己的Maven插件,使其更简单、更灵活,但这是可行的,事实上,这将是一个非常好的项目

从我所看到的情况来看,D程序员坚持使用好的、旧的Make或编写BASH脚本来完成整个任务。但是,我见过基金会的人使用。如果你是Python程序员,你会喜欢WAF的。如果没有,尝试类似的事情-我见过人们使用烤饼,翻拍,预制作,等等

是最接近使用D制作的非常有用的工具。不幸的是,它们是死项目(


我正在开发一个maven风格的工具,但考虑到我拥有的时间,它将在2014年可用。

我会选择scons,它支持D,多亏了Russel Winder:


如果不是,则使用POM(普通旧品牌)。

+1表示问题。不久前我也在找这个,但什么也找不到。最后在我自己的项目中使用了CMake,并手动将库安装到个人根目录,如
~/droot
(因此这些库位于
~/droot/lib
),并在CMake配置中指定了此路径。这与Java的Maven或Go的Go-get相去甚远。有人试过用D摇动吗?实际上,D构建过程与C\C++非常不同。C\C++使用头文件,并且您只需要在实现文件发生更改时重新编译它,如果它包含的头文件之一发生了更改,如果该文件包含的头文件之一包含在
头文件中,等等。如果在实现文件中进行更改,则只需重新编译该文件。D是不同的-API和实现在同一个文件中,D严重依赖于模板元编程,因此如果您更改了某些内容,您必须重新编译所有内容。这使得增量构建变得不可能。@IdanArye:评论不错。这是我问的主要原因。传统的构建工具非常注重手动指定依赖项。对于D构建过程来说,这并不总是正确的。例如,当使用DMD时,您可以生成D接口文件(.di)以加快速度,但您不必这样做。我同意Idan,但我不想详细讨论这些细节。毕竟,问题不是关于这些,而是关于整个生命周期(如果我没有弄错的话)