如何使用 automake 安装 D 库的 .d 文件?
Posted
技术标签:
【中文标题】如何使用 automake 安装 D 库的 .d 文件?【英文标题】:How to install .d files of a D library using automake? 【发布时间】:2019-01-28 19:11:09 【问题描述】:使用Makefile.am
安装(系统范围)D 库(至少在 GNU 系统上)的正确方法是什么?
这是我安装静态库和共享库的代码:
install-data-local:
install librdf_dlang.a librdf_dlang.so $(libdir)
剩下的问题是如何安装.d
文件供开发者使用我的库?
特别是.d
文件的安装目录应该是什么?
【问题讨论】:
【参考方案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 头文件只是一个(尽管是最常见的)示例。以上是关于如何使用 automake 安装 D 库的 .d 文件?的主要内容,如果未能解决你的问题,请参考以下文章