私はc ++で小さなツールを書いています。実際には、カスタマイズできるフレームワークに近いものです。以下のディレクトリ構成になっています(簡略化した例)。
src/
main/myexec # linked to libapple.so
apple/
coder/libapple.so
john/libapple.so
.
.
james/libapple.so
ここで、ディレクトリ「coder」は一般的なダミーであり、libapple.so を生成するサンプル コードが含まれています。さまざまなユーザーがこのツールをチェックアウトし、独自のディレクトリを作成し、「coder」からテンプレート コードをコピーして、必要に応じてカスタマイズできます。configure オプション (ユーザーを示す) に応じて、それぞれの libapple.so を生成する必要があります。
前述したように、これは単純化された例です。一般的なプログラミング、継承などの問題ではありません。実際、「apple」フォルダーと同様に、「scripts」、「docs」、「configs」など、それぞれが同様のユーザー固有のフォルダーを持つ他のフォルダーがあります。また、ツールは単一のリポジトリの場所で維持されるため、ユーザー固有ではないすべてのコードをサポートおよび維持できます。ポリシーとして、ユーザーは自分のフォルダーの内容のみを変更してチェックインすることが期待されています。
私が直面している問題は「configure.ac」にあります。「AC_ARG_WITH」オプションは、新しいユーザーごとに configure.ac を編集する必要があるため、使用したくありません。また、各ユーザーの AC_CONFIG_FILE エントリは、フォルダ名を除いてまったく同じです。「--enable-user=User」を使用してから、AC_SUBST(USERDIR) を使用してみました。これは、Makefile.am で「SUBDIRS = @USERDIR@」を設定するのにも役立ちます。「AC_CONFIG_FILE = ([apple/${USERDIR}/Makefile])」を指定すると、「Makefile.in」がユーザー フォルダーの下に作成されないという事実を除いて、すべて問題ないようです。
この問題を克服する方法をアドバイスしてください。最悪の場合、ソフトリンクを作成することになるかもしれません:(