find_package с указанной версией в имени скрипта конфигурации

Мне нужно использовать 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 команду искать?

1

Решение

В соответствии с find_package документация, версия встроена в libmongocxx-config-version.cmake файл.

Это означает, что если вы хотите получить пакет libmongoc-1.0-config.cmake, вы должны использовать:

find_package(libmongoc-1.0 ${LIBMONGOC_REQUIRED_VERSION} REQUIRED)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]