我正在寻求有关如何为跨平台库设计灵活且符合逻辑的目录结构的建议。该库旨在可移植到多个类 UNIX 操作系统和一些处理器架构,具有以下标准:
- 特定于操作系统的代码;
- 特定于 CPU 的代码;
- 特定于操作系统和CPU 的代码;
- 当存在专门的实现时,能够覆盖某些文件;
- 移植时要访问的地方很少。
我相信将这些问题交给一个有能力的构建系统是明智的,但我不想冒险让目录结构在这个过程中变得复杂。值得注意的是,将会有相当多的文件,其中可能有三分之一将是特定于操作系统或 CPU 的,或两者兼而有之。
到目前为止,这是我想出的:
bin/
doc/
include/
ports/
{linux,freebsd,openbsd,...}/
{amd64,x86,arm,...}/
...
<shared code>
src/
ports/
{linux,freebsd,openbsd,...}/
{amd64,x86,arm,...}/
...
<shared code>
安装这个库时,最好复制标题以允许更漂亮的代码,例如:#include <bits/abi.h>
这可能是linux-amd64
.
解决这种潜在混乱的优雅方法是什么?