Выделите две минимально необходимые версии для пакета

#cmake

#cmake

Вопрос:

Мой проект CMake зависит от пакета, в котором была ошибка. Ошибка была исправлена в выпусках исправлений для двух разных ветвей функций; допустим, ошибка исправлена в 2.4.4 и 2.5.1, но все еще присутствует в 2.4.3 и 2.5.0. Некоторые из моих пользователей застряли с набором функций 2.4 пакета dependency, а другие с 2.5, поэтому у меня проблема с внедрением 2.4.4 для первого и 2.5.1 для второго. Как я могу это сделать при вызове find_package? Если я вызову:

 find_package(ExternalPackage 2.4.4 REQUIRED)
  

тогда это будет нормально для пользователей с 2.4, но это также позволит использовать 2.5.0; таким же образом, если я вызову:

 find_package(ExternalPackage 2.5.1 REQUIRED)
  

тогда мой код не будет работать с 2.4.x. Есть ли способ это исправить? Спасибо.

Ответ №1:

Проверка версии пакета выполняется файлом версии, предоставленным пакетом. Единственное, что может повлиять на его поведение, — это EXACT параметр, который вы можете отправить в find_package .

Моей рекомендацией было бы проверить наличие версии 2.4.4 , но утверждать, что это не так 2.5.0 .

 if(ExternalPackage_VERSION VERSION_EQUAL "2.5.0")
  message(FATAL_ERROR "ExternalPackage must not be version 2.5.0. 2.4.4 or 2.5.1 or better is required.")
endif()
  

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

1. Это кажется аккуратным и работающим решением, я воспользуюсь этим. Спасибо!