如何使用automake安装D库的.d文件?

时间:2019-01-28 19:11:10

标签: installation libraries d automake

使用Makefile.am(至少在GNU系统上)安装(全系统)D库的正确方法是什么?

这是我的代码,用于安装静态和共享库:

install-data-local:
        install librdf_dlang.a librdf_dlang.so $(libdir)

剩下的问题是如何安装.d文件供开发人员使用我的库?

特别是.d文件的安装目录应该是什么?

2 个答案:

答案 0 :(得分:1)

根据Filesystem Hierarchy Standard(例如SO question

/usr/local/include

在“类似于Linux / unix的系统”上看起来很不错。尤其参见note 9

  

从历史上严格按照标准,/ usr / local用于必须存储在本地主机上的数据(与/ usr相对,它可能跨网络安装)。大多数情况下,/ usr / local用于安装不属于标准操作系统发行版的软件/数据(在这种情况下,/ usr仅包含属于标准操作系统发行版的软件/数据)。将来可能会更改FHS标准以反映这一事实上的惯例。

我对Windows一无所知。

答案 1 :(得分:1)

如果要在系统范围内安装D库和源代码(我认为是接口文件),则最常见的位置是/usr/include/<project name>/usr/local/include/<project name>,只要它不与某些冲突现有的C / C ++项目,用于在其中存储头文件。一些D程序员也更喜欢/usr/include/d//usr/local/include/d/ ...

例如,我为此使用/usr/di(D导入),并且我的库项目在其中具有所有接口文件。我将解释为什么我不喜欢在那里有单独的项目目录。

无论选择哪个目录,都需要更新编译器搜索路径。

这是我dmd.conf的一部分:

[Environment64]
DFLAGS=-I/usr/include/dmd/phobos -I/usr/include/dmd/druntime/import -I/usr/di -L-L/usr/lib64 -L--export-dynamic -fPIC

和ldc2.conf看起来像:

    // default switches appended after all explicit command-line switches
    post-switches = [
        "-I/usr/include/d/ldc",
        "-I/usr/include/d",
        "-I/usr/di",
        "-L-L/usr/lib64",
    ];

如果您希望每个项目都有一个单独的目录,则每个项目都以-I<path>结尾。 -我真的不喜欢这种方法。但是,它在开发人员中非常流行,因此如何组织D导入文件实际上取决于您。我知道有多少开发人员不喜欢使用domain.product.packages的Java方法,但这很适合所有D接口文件都在一个地方,而且最重要的是,没有冲突,因为 domain / product 部分...