クロスプラットフォームライブラリの柔軟で論理的なディレクトリ構造を設計する方法についてアドバイスを求めています。このライブラリは、次の基準で、いくつかのUNIXライクなオペレーティングシステムといくつかのプロセッサアーキテクチャに移植できるようになっています。
- OS固有のコード。
- CPU固有のコード。
- OSおよびCPU固有のコード。
- 特殊な実装が存在する場合に特定のファイルをオーバーライドする機能。
- 移植時に訪問する場所はほとんどありません。
これらの問題を有能な構築システムの手に委ねることは賢明だと思いますが、その過程でディレクトリ構造が複雑になるリスクを冒したくありません。注目に値するのは、かなりの数のファイルが存在することです。そのうちの3分の1は、OSまたは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
。
この潜在的な混乱へのエレガントなアプローチは何ですか?