There is this project kept in a Git repository, which we build with CMake and Ninja.
We are using globbing expressions/functions to collect all the source files to be compiled. That means that every time a file is added/removed, CMake has to be called to reparse the directories.
We have seen this is bringing some time loss when somebody pulls after somebody has pushed some new file, without modifications to any of the CMake files. I say this last thing because a modification to any of the CMake files would trigger a call to CMake (by Ninja), and everything would be fine.
How can I obtain that CMake is called before/when I start building again my project after pulling? (Note: it does not matter if CMake is run a little bit more than necessary, as long as it is not always)
I am building out of source, furthermore using several build directory where, for example, I test different compilers.
I am exploring some solutions. One using git hooks script, namely post-merge (but how can I guarantee I will retrieve the path to source/CMakeLists.txt to touch it? Can I commit the script so that it runs for everybody? It is not a public project). I don't know if it is relevant; we mainly use Git through a graphic interface (TortoiseGit).
The other possible solution would be using in CMake a custom target dependent on the content of .git\refs\heads directory, but I cannot think of a combination that could really work...
Some references:
CMake commands: CMake 2.8.11 Documentation