【问题标题】:How to install .d files of a D library using automake?如何使用 automake 安装 D 库的 .d 文件?
【发布时间】:2019-01-28 19:11:09
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: installation libraries d automake


    【解决方案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 部分没有冲突。 ..

    【讨论】:

      【解决方案2】:

      根据Filesystem Hierarchy Standard(例如这个SO question

      /usr/local/include
      

      在“类 linux/unix 系统”上看起来是一个强有力的候选者。尤其看note 9

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

      我不知道 Windows。

      【讨论】:

      • /include 不只适用于 C 头文件吗?
      • 我查看了一些 Ubuntu D 软件包。他们使用include/d
      • @porton /include 用于 include files 并且是语言中立的。 C 头文件只是一个(尽管是最常见的)示例。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 2010-12-10
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      相关资源
      最近更新 更多