CMake: как обработать отсутствующий скрипт FindXXX в версии 2.6, но присутствует в версии 2.8 - PullRequest
2 голосов
/ 01 сентября 2011

Скрипт FindHDF5.cmake доступен начиная с CMake 2.8. Мое программное обеспечение работает на разных системах с CMake 2.8 или 2.6.

Когда я использую find_package (HDF5 REQUIRED), он работает в 2.8, но, конечно, не в 2.6. Поэтому я подумал скопировать FindHDF5.cmake в мой проект. Но это 1. некрасиво и 2. неосуществимо.

Как вы справляетесь с такой ситуацией?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

Если вам действительно нужно использовать

find_package(HDF5 REQUIRED)

тогда вам действительно нужен CMake 2.8 или более поздней версии.

Если вы должны работать с CMake 2.6, вы должны предоставить свой собственный FindHDF5.cmake.

При необходимости вы можете использовать условную логику на основе версии CMake, например:

if("${CMAKE_VERSION}" VERSION_LESS 2.8)
  # Use your own "CMake/FindHDF5.make"...
  set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMake ${CMAKE_MODULE_PATH})
endif()

Однако переменная CMAKE_VERSION не была доступна до CMake 2.6.3, поэтому вам потребуется по крайней мере CMake 2.6.3 для надежного использования такой конструкции.

Смотри также:

0 голосов
/ 01 сентября 2011

Вы можете установить путь к модулю cmake в любом виде:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /opt/common/cmake-backports)

В вашем дистрибутиве (Linux) есть неограниченные возможности для заполнения пользовательских файлов. Вы можете создать .deb / .rpm самостоятельно, чтобы поместить Module-файлы в / opt / common / .. или в / usr / share ... Или вы предоставляете NFS-сетевой каталог с этими файлами.

Возможно, самое простое - обновить cmake 2.6-hosts до cmake-2.8. Для большинства дистрибутивов вы найдете готовые бэкпортированные пакеты. (Например, Ubuntu 10.4)

...