Git の下に (大規模な) Fortran プロジェクトがあります。開発中の機能に対応するさまざまなアクティブなブランチがあります。各ブランチのコードのコンパイル済みバージョンを維持する便利な方法を見つけたいと思います。
コードは現在 Make を使用してコンパイルされており、すべてのオブジェクト ファイルはバイナリと共に別のフォルダー (build_branch1 など) に保持されています。ディレクトリ構造は次のようになります。
Makefile
./src
./build_branch1/objects
./build_branch1/bin
./build_branch2/objects
./build_branch2/bin
...
したがって、原則として、次のようにすべてのブランチをコンパイルできます。
git checkout branch1
make --prefix=build_branch1
git checkout branch2
make --prefix=build_branch2
など...
Make はソース (Git によって新たにチェックアウトされたもの) のタイムスタンプを build_branchN フォルダー内のオブジェクト ファイルと比較し、変更されたものを再コンパイルします。問題は、ブランチ 1 とブランチ 2 の間で異なるすべてのソース ファイルのタイムスタンプが Git によって変更されるため、必要のないときに多くのファイルが再コンパイルされることです。コードのコンパイルには長い時間がかかるため (最大 30 分)、これは大きな不便になる可能性があります。
この場合の最善の戦略は何だろうと思っていました。この投稿のように、チェックアウトごとにタイムスタンプを更新することを考えています。 あなたは何をお勧めします?