Исходный код кэша, полученный через CMake fetchContent в действиях GitHub

#cmake #github-actions

#cmake #github-действия

Вопрос:

У меня есть проект на основе CMake, в котором я в значительной степени полагаюсь на fetchContent для повторного поиска нескольких библиотек (исходного кода). Загрузка всех библиотек может занять время, которое я хочу сэкономить при компиляции в CI runner (действия GitHub).

Я видел, что есть действие кэша, как я могу использовать его для кэширования выбранного исходного кода?

В качестве бонуса может быть полезно кэшировать скомпилированный код этих выбранных библиотек. Это возможно как-то?

Комментарии:

1. how I can use that to cache Есть длинная документация , объясняющая, как ее использовать, и она связана с README проекта, который вы связали. Что вы пробовали? Что именно вам неясно? It that possible somehow? ДА.

2. Вопросы больше о функции fetchContent. Я пытаюсь понять, что я должен кэшировать и где его получить, чтобы система сборки (CMake) вела себя правильно.

3. FetchContent просто загружает файл BINARY_DIR в соответствии с заданным FetchContent_Populate ExternalProject_Add используется для его реальной загрузки. Просто кэшируйте место назначения, где он был загружен — он будет восстановлен. Но, в общем, кажется, что вы хотели бы просто кэшировать весь каталог сборки, просто убедитесь, что правильно управляете значениями кэша в cmake — они сложны.

4. Я понимаю. Я не хочу кэшировать весь каталог сборки, потому что я на самом деле был чистой сборкой. Проблема с кэшированием только FetchContent места назначения загрузки заключается в том, что оно находится внутри каталога сборки, который не существует до вызова CMake. И последующее извлечение кэша, ну, заставит CMake извлекать содержимое.