ゲームライブラリプロジェクトの管理方法について
現在C/C++(VisualStudio2008 academic edition)でライブラリのようなものを作成しているのですが悩んでいることがあるので相談させてください。
ライブラリの実装として、
・ネットワーク
・ファイル入出力
・描画系
・オーディオ再生
・数学系
・アルゴリズム
・シーングラフ管理システム
・メモリ管理システム
・デバッグシステム&プロファイラー
のようなものを1つのプロジェクトで管理しています。
しかし、いろいろあってファイル入出力のシステムだけ使おうとしても1つのプロジェクトに描画やらネットワークやらいらないシステムも芋づる式にくっついてきてしまいます。
「そういうふうに作ったんだから当たり前だ」と言われてしまえばそれまでなのですが、普通はこのようないろんなシステムが入ってくる場合、どのようにプロジェクトを管理するのが適切でしょうか?
私なりにいくつか考えたものでは
1:現状のまま使っていき不要なライブラリがあるのも承知でそのまま利用する
2:1つ1つのシステムごとにプロジェクトをわけてパスを通して別プロジェクトだが1つのシステムのように扱う(当然共有すべきヘッダーやクラスが出てきたりするし、ライブラリファイル(.lib)やDLLがたくさんできあがる)
3:1つ1つまったく別プロジェクト、別ソリューションとして作成し、共有するヘッダーを作らないようにする(同じことが書いてあるヘッダーが各ソリューションのフォルダに入ったりすることもある(当然1つを変えるとすべてを手作業で編集する作業が必要になる))
以上です。
3番目以外は試してみたのですが、
1番は、いらないシステムまでくっついてくる(1つのシステムを利用するのにヘッダーの管理がべらぼうに大変)
2番は、パスの通っているプロジェクトから通っていないプロジェクトへの管理が大変
(たとえばプロジェクトがA,B,CとあったとしてBはAのプロジェクトにパスが通っていてヘッダーをincludeしていると仮定する、CはBのプロジェクトにパスが通っているとする。この時、CがBのプロジェクト内のヘッダーをincludeするとCからAに対してパスが通っていないためコンパイルエラーとなる)
表現方法があいまいで伝わらない個所もあるかもしれませんが、これ以外に適切な管理方法や、こんな方法でやると便利などといった情報があれば教えてください。
よろしくお願いします。