私は C++ クラスのコレクションを開発しており、コレクションのユーザーのコンパイルの容易さを損なうことなく、組織を維持する方法でコードを共有する方法に苦労しています。
私が見たオプションは次のとおりです。
- コンパイル済みのライブラリ ファイルを配布する
- ソースをヘッダーファイルに入れます(この回答で説明されているように暗黙のインラインを使用)
- シンボリック リンクを使用して、コンパイラがファイルを検索できるようにします。
私は現在、3 番目のオプションを使用しています。ここでは、含めたいクラスごとに、各クラスのヘッダーとソース ファイルをシンボリック リンクします (例ln -s <path_to_class folder>/myclass.cpp
) プロジェクト フォルダーの場所を移動できないことを除いて、これはうまく機能します (すべてのシンボリック リンクが壊れます)。 ) そして、シンボリックリンクされたすべてのファイルをぶら下げなければなりません。
私は 2 番目のオプション (Java の外観) を気に入っていますが、すべてをインラインで宣言するとコード サイズが肥大化するのではないかと心配です。
コレクションのユーザーは、どこかにプロジェクト フォルダーを作成し、何らかの形でコレクションをコンパイル プロセスに含めます。
いくつかのことが可能になることを望みます:
- 簡単なコンパイル (
gcc *.cpp
プロジェクト フォルダーからのようなもの) - コンパイルされていない形式でライブラリを簡単に配布できます。
- モジュールごとのライブラリ編成。
- コンパイルされたコードのサイズは肥大化していません。
ドキュメンテーション (Doxygen が処理します) やコンパイル時間については心配していません。全体のモジュールは小さく、最も遅いマシン上の最大のプロジェクトでさえ、コンパイルに数秒しかかかりません。
違いがある場合は、GCCコンパイラを使用しています。