現在、私は埋め込みプロジェクトに取り組んでいます。現時点では、私が唯一の開発者であるため、ローカルの git リポジトリしかありません。ただし、OpenSource にして github に移動することを考えています (一定レベルの機能に到達した場合:-))。ですから、他の開発者が参加できるように、良いプロジェクト構造を作ることについてよく考えています。
さて、現時点では、プロジェクトは非常に簡単なセットアップです。
次のようなフォルダー構造があります。
/ (project root)
|-- .git
|-- documentation
|-- software
| |
| |-- subfolder_1
| | |
| | |-- someLib
| | |-- someOtherLib
| |
| |-- subfolder_2
|
|-- hardware
ご覧のとおり、プロジェクトのルートに .git フォルダーを含む、ネストされたフォルダーがたくさんあります。
このプロジェクトでは、ライブラリを開発する必要があります。これを someLib と呼びましょう (上の「図」の someLib フォルダは、現時点では空です。lib から始めていないためです)。
このライブラリはおそらく非常に大きくなります。さらに重要なことに、この特定のプロジェクトに関連する機能は含まれていません。私、または他の誰かが別のプロジェクトでも使用する可能性があります。
ですから、lib を独自のプロジェクトにするのは良い考えだと思います。次に、git サブモジュールまたはサブツリーを使用して、lib をプロジェクトに「リンク」します。
今何が問題なの?
ライブラリを独自のプロジェクトに移動すると、追加のファイルが作成されます。メイン プロジェクトで lib を開発するのは簡単ですが、独自のプロジェクトでは、追加のテストコード、makefile、「main.c」、および (組み込まれているため) ハードウェア ドライバーが必要です。この追加のものがないと、lib を実行/テストできません。
これは次のようになります。
/ (someLib root)
|-- .git
|-- documentation
|-- makefile
|-- main.c
|-- hardwareDriver_1
|-- hardwareDriver_2
|-- someLib
|
|-- someLib.c
|-- someLib.h
ご覧のとおり、メイン プロジェクトにこれらすべてを含めたくありません。
では、サブモジュールまたはサブツリーのアプローチを使用する場合、そのようなものがメイン プロジェクトに取り込まれないようにする方法はありますか?
または、もっと重要なことですが、これをどのように解決しますか?
この問題に直面したのは私が初めてだとは思いません。良いヒントはありますか?