2

現在、私は埋め込みプロジェクトに取り組んでいます。現時点では、私が唯一の開発者であるため、ローカルの 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

ご覧のとおり、メイン プロジェクトにこれらすべてを含めたくありません。

では、サブモジュールまたはサブツリーのアプローチを使用する場合、そのようなものがメイン プロジェクトに取り込まれないようにする方法はありますか?

または、もっと重要なことですが、これをどのように解決しますか?

この問題に直面したのは私が初めてだとは思いません。良いヒントはありますか?

4

2 に答える 2

2

次に、git サブモジュールまたはサブツリーを使用して、lib をプロジェクトに「リンク」します。

サブモジュールやサブツリーを使用するのではなく、このライブラリをライブラリとして使用するのはどうですか?

このサブモジュールを使用して を生成し.so、メイン コードにそのパッケージを使用させることができます。両方のプロジェクト (ライブラリとメインのファイル) ファイルが完全に分離されるため、問題が解決します。

于 2014-08-06T05:51:48.390 に答える
0

追加のテストコード、makefile、「main.c」が必要です

それは別のサブモジュールのように聞こえます:

  • そのライブラリを開発するためのメインの親リポジトリ:
    • lib ソースのサブモジュール (最初のプロジェクトにインポートすることもできます)
    • lib テスト固有のファイルのサブモジュール

その親レポは、lib ソースのどのバージョンが lib テスト ファイル/コードのバージョンと一致するかを記録するためにあります。

テスト コードを実際のコードから分離すると、lib プロジェクトを他のプロジェクトに簡単に組み込むことができます。

于 2014-08-06T05:47:24.513 に答える