#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 извлекать содержимое.