2009-03-11 6 views
11

私はの最終的なを載せている実質的なソースコード(OOFILE)を持っています。Sourceforgeに載せています。モノリシックインクルードディレクトリを使うか、ソースファイルを使ってヘッダファイルを保存するかを決める必要があります。C++ヘッダーファイル - 1つのディレクトリに置くか、ツリー構造でマージしますか?

私はこの決定をしてから、SourceForgeのsvn repoにプッシュします。その動きの後にそれを使用する多くの人々が、SFから直接チェックアウトされた作業コピーを保持し、その構造を変更したくないと思います。

フルソースツリーには、25個のフォルダに約262個のファイルがあります。 8.3文字の名前に合致しているため、たくさんのクラスがあります(はい、Win3.1に戻っています)。多くのクラスは1つのファイルにあります。私がObjectMasterで開発していたように、それは私を悩ませることはありませんでしたが、ファイルごとのクラス数を最小限に抑えるために、最近の動向に合わせて分割します。 class listの簡単なスキムから、約600のクラスがあります。

OOFILEは、Mac、Windows、および様々なUnixプラットフォームで構築される予定のクロスプラットフォーム製品です。 を指すコンパイラでは、フラットではなく、のフラットファイルが含まれており、dirsが含まれているので、ヘッダはソースで保持されていました。

その後、主にVisual Studioユーザーを幸せにするために、を含むディレクトリを使用してビルドを再構成しました。私はそれらのモデルの中から選択しようとしています。

全体OOFILE製品は、かなりの数のドメインについて説明します

  • データベースフロントエンドを
  • データベースバックエンドの
  • 範囲
  • MacとWindows
  • 単純な文字・モードのレポートのための
  • シンプルな2Dのグラフ作成エンジン書かれたHTMLとテキストのリスト
  • MacとWindowsのプレビューと印刷とクロスプラットフォームの生成、テキスト、RTF、HTML、XMLレポートの非常に豊富なバンディングレポートライターPowerPlantのとMFC
  • クロスプラットフォームのユーティリティクラス
    • ファイルとディレクトリの操作
    • 文字列
    • 配列
    • XMLの実装とデータベースへの結合を容易なCRUDフォーム、用
    • フォーム統合エンジンタグの生成

多くの人が単一のプラットフォームでのみ使用したいと思っています。そのコード領域の一部は純粋なレガシーです(例:Classic MacのPowerPlant UIフレームワーク)。したがって、モノリシックなインクルードディレクトリにダンプされた不要な領域からヘッダーを持たないことを人々は気に入っているようです。

私はインクルードディレクトリを上記のドメインのいくつかに分割し、元の構造のようにもっと響いていることに気付き始めました。要約すると

、選択肢があるように見える:

  1. ソースへのすべてのヘッダーは、隣接する、元のモデルをしてください - いくつかの複雑なプロジェクトに含まれるのコストで最大の柔軟性。
  2. スプリット内のすべてのディレクトリを含めるには、ドメインによって含まれるので、そこに多くを使用して誰かのために約6ディレクトリかもしれないが、純粋なデータベースのユーザーは、おそらく単一のディレクトリを持っているでしょう。 Unixのから

は様相を構築し、recommended structure 2.私の状況は(スニフ、CodeWarriorに、どのように私はあなたを欠場おら!)幸せVisual StudioとXCodeのユーザーを維持するために必要によって複雑になっています。

編集 - 選択したソリューション:

私は含まにfour subdirectoriesと一緒に行きました。私はプラットフォームでそれをさらに分割しようとし始めましたが、非常に騒々しいものでした。

答えて

6

個人的に私は2、または3と一緒に行くでしょう。

どちらを選んでも、組み込みパスの設定方法についてはビルド手順で明瞭にしてください。オープンソースプロジェクトを構築するのは本当に難しいものではありません。開発者は即座にすぐに使えるようにしたいと思っています。また、多くの文書化されていない環境変数(あるいは何か)

+0

Visual C++の初期バージョンでは相対パスはサポートされていないため、少なくとも1つの環境変数を使用する必要がありましたが、意味するところはわかります! –

+0

私の背中からSOを得るために受け入れられたとマークされています。 実際はそうではありません;-)インクルードパスのポイントは本当に良い思い出です。 –