使用Makefile.am
(至少在GNU系统上)安装(全系统)D库的正确方法是什么?
这是我的代码,用于安装静态和共享库:
install-data-local:
install librdf_dlang.a librdf_dlang.so $(libdir)
剩下的问题是如何安装.d
文件供开发人员使用我的库?
特别是.d
文件的安装目录应该是什么?
答案 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 部分...