Мне нужно использовать mangrove (библиотека mongo ODM поверх mongo-c-driver и mongo-cxx-driver) и включить это в мой проект в качестве команды CMake ExternalProject_Add с зависимостью от mongo-c-driver / mongo-cxx-driver
mongocxx генерирует конфигурационные сценарии CMake с такими именами:
libmongocxx-config.cmake
libmongocxx-конфиг-version.cmake
и никаких проблем, чтобы найти их мангровым с этим сценарием:
set(LIBMONGOCXX_REQUIRED_VERSION 3.1.3)
set(LIBMONGOCXX_REQUIRED_ABI_VERSION v_noabi)
find_package(libmongocxx ${LIBMONGOCXX_REQUIRED_VERSION} REQUIRED)
Однако mongo-c-driver генерирует те сценарии с именем, которое включает версию ABI в имена файлов.
libmongoc-1,0-config.cmake
libmongoc-1,0-конфигурации-version.cmake
и аналогичный код CMake:
set(LIBMONGOC_REQUIRED_VERSION 1.7.0)
set(LIBMONGOC_REQUIRED_ABI_VERSION 1.0)
find_package(LibMongoC ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)
не могу найти сценарии.
Конечно, если я вручную удаляю версию из имен файлов, она может найти эти файлы, но я бы хотел исправить проблему в сценарии и на стороне мангового файла.
Итак, вопрос о технике CMake:
Есть ли возможность указать версию пакета, которая будет автоматически использоваться (внутри имен скриптов CMake) find_package
команду искать?
В соответствии с find_package документация, версия встроена в libmongocxx-config-version.cmake
файл.
Это означает, что если вы хотите получить пакет libmongoc-1.0-config.cmake
, вы должны использовать:
find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)
Других решений пока нет …