Так что это скрипт src / cmake / modules / FindOpenImageIO.cmake , который ведет себя необычно образом:
Если не удается найти библиотеку при первом запуске cmake
, то завершится неудачей все далее вызовы cmake
, когда настройки среды становятся правильными или нет.
Единственный способ добиться успеха после первого сбоя - удалить файл кэша CMake (CMakeCache.txt
в каталоге сборки).
Обычно FindXXX.cmake
записываются так, что если библиотека не была найдена для при первом запуске cmake
, можно настроить параметры среды и перезапустите cmake
, чтобы попытаться найти в библиотеке снова . Команды CMake find_library
, find_path
и аналогичные прекрасно поддерживают такое поведение.
Сценарий FindOpenImageIO.cmake
использует
find_library(OPENIMAGEIO_LIBRARY ...)
для поиска OpenImageIO
библиотеки, а затем извлекает часть каталога файла библиотеки в другую переменную OPENIMAGEIO_LIBRARY_DIRS
:
get_filename_component (OPENIMAGEIO_LIBRARY_DIRS "${OPENIMAGEIO_LIBRARY}" DIRECTORY CACHE)
Но кэширует результат такого извлечения (из-за опции CACHE
), поэтому, если библиотека не была найдена в первый раз, переменная OPENIMAGEIO_LIBRARY_DIRS
становится пустой и никогда не будут переписывать снова (поскольку они кэшируются). Пустота переменной обрабатывается скриптом «библиотека не найдена».