コンパイルにはgnumakeとgccを使用しています。私はLinux(Ubuntu)を使用しています
これは、ノードが最終的なオブジェクトファイルを表すゲームブラックジャックの図です。
各クラスが独自のフォルダーにあるコードを整理しました。
tree -d
.
└── classes
├── dealer
│ └── hand
├── deck
│ └── card
│ ├── card_color
│ ├── card_suit
│ ├── card_value
│ └── colorizer
├── discard_pile
│ └── card
├── user
│ └── hand
│ └── card
└── user_choice
ファイルシステムをグラフのように動作させるために、一部のディレクトリはシンボリックリンクです。
繰り返されるコードはありません。
たとえば、実際のカードコードがディレクトリデッキにある場合、handフォルダとdiscard_pileフォルダには、そのディレクトリへのシンボリックリンクがあります。
プログラムがすべてのサブディレクトリオブジェクトファイルにリンクしているため、複数の定義エラーが発生しました。
シンボリックリンクをたどり、いくつかのオブジェクトファイルを複数回収集することになります。
シンボリックにリンクされたフォルダーを無視するように指示することはできません。フォローする必要がある場合があるためです。例:ディーラーフォルダーでドライバープログラムを作成する場合、hand、card、card_color、card_suit、card_value、colorizerオブジェクトを収集する必要があります(handフォルダーはシンボリックリンクですが)。
重複するオブジェクトファイルの収集を継続する方法はありますが、リンクする前にgccに指示するか、重複を無視するようにしますか?
これらはシンボリックリンクであるため、パス名は異なります。
また、オブジェクトに同じ名前が付けられているが、実装が異なる場合もあります。
重複するオブジェクトファイルが実際に同じファイルであり、複数回リンクするべきではないことを識別する方法がわかりません。
大規模で拡大するプロジェクト(実体関連が複雑な場合)の管理方法についてアドバイスを求めて、この質問をあまり一般的にしたくありませんが、私の構造が無意味または問題があると思われる場合は、問題などを指摘してくださいあなたはそれについて行くでしょう。クラス図がないと関係を導き出すのが難しいため、すべてのソースファイルを1つのディレクトリに配置することは避けようとしていました。