このプロジェクトは、cmake と ninja で構築した git リポジトリに保持されています。グロビング式/関数を使用して、コンパイルするすべてのソース ファイルを収集しています。つまり、ファイルが追加/削除されるたびに、ディレクトリを再解析するために cmake を呼び出す必要があります。
cmake ファイルを変更せずに、誰かが新しいファイルをプッシュした後に誰かがプルすると、時間のロスが発生することがわかっています。cmake ファイルのいずれかを変更すると、(ninja による) cmake の呼び出しがトリガーされ、すべてが正常になるため、これを最後に言います。
プル後にプロジェクトのビルドを再開する前/実行時に cmake が呼び出されるようにするにはどうすればよいですか? (注: cmake が必要以上に実行されても、常にそうでない限り問題ありません)
ソースからビルドしています。さらに、たとえばさまざまなコンパイラをテストするいくつかのビルド ディレクトリを使用しています。
私はいくつかの解決策を模索しています。git hooks スクリプト、つまり post-merge を使用するもの (ただし、source/CMakeLists.txt へのパスを取得してそれに触れることをどのように保証できますか?スクリプトをコミットして、すべての人に実行されるようにすることはできますか?これは公開プロジェクトではありません) . 関連性があるかどうかはわかりませんが、主にグラフィック インターフェイス (TortoiseGit) を介して git を使用しています。
他の可能な解決策は、.git\refs\heads ディレクトリの内容に依存するカスタム ターゲットを cmake で使用することですが、実際に機能する組み合わせは考えられません...
いくつかのリンク:
- http://git-scm.com/book/en/Customizing-Git-Git-Hooks
- https://www.kernel.org/pub/software/scm/git/docs/githooks.html
CMake コマンド: http://www.cmake.org/cmake/help/v2.8.11/cmake.html