Я хочу повторно использовать исходную папку моих внешних библиотек, объявленных FetchContent , чтобы избежать нескольких загрузок для нескольких конфигураций сборки (debug / release / android / emscripten). Чтобы уточнить, конфигурации сборки имеют разные двоичные каталоги, например / build / debug, build / release ... Идеальным решением было бы иметь источник внешней зависимости в {CMAKE_SOURCE_DIR} / ext и двоичном dir в {CMAKE_BINARY_DIR} / $ {name} -build
При использовании FETCHCONTENT_BASE_DIR (см. пример ниже) исходный каталог становится общим, а также двоичным каталогом, который вызывает полную перестройку всякий раз, когда я переключаюсь между конфигурациями сборки.
Существует также параметр BINARY_DIR для FetchContent_Populate , но, похоже, он не дает желаемых результатов.
set(FETCHCONTENT_BASE_DIR ${CMAKE_SOURCE_DIR}/depenendencies)
FetchContent_Declare(
${name}
GIT_REPOSITORY ${url}
GIT_TAG ${tag}
GIT_PROGRESS ON
)
FetchContent_GetProperties(${name})
if (NOT ${name}_POPULATED)
FetchContent_Populate(
${name}
)
add_subdirectory(${${name}_SOURCE_DIR} ${${name}_BINARY_DIR})