Этот проект хранится в репозитории git, который мы собираем с помощью cmake и ninja. Мы используем глобальные выражения/функции для сбора всех исходных файлов для компиляции. Это означает, что каждый раз, когда файл добавляется/удаляется, необходимо вызывать cmake для повторного анализа каталогов.
Мы видели, что это приводит к некоторой потере времени, когда кто-то извлекает после того, как кто-то запушил какой-то новый файл, без изменений в каком-либо из файлов cmake. Я говорю это в последнюю очередь, потому что модификация любого из файлов cmake вызовет вызов cmake (от ниндзя), и все будет в порядке.
Как я могу добиться того, чтобы cmake вызывался до/когда я снова начну сборку своего проекта после извлечения? (Примечание: не имеет значения, если cmake запускается немного больше, чем необходимо, если это не всегда)
Я строю из исходного кода, кроме того, используя несколько каталогов сборки, где, например, я тестирую разные компиляторы.
Я изучаю некоторые решения. Один с использованием скрипта git hooks, а именно post-merge (но как я могу гарантировать, что получу путь к source/CMakeLists.txt, чтобы прикоснуться к нему? Могу ли я закоммитить скрипт, чтобы он работал для всех? Это не общественный проект). Не знаю актуально ли это, мы в основном используем git через графический интерфейс (TortoiseGit).
Другим возможным решением было бы использование в cmake пользовательской цели, зависящей от содержимого каталога .git\refs\heads, но я не могу придумать комбинацию, которая действительно могла бы работать...
Некоторые ссылки:
- 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