Сборка проектов LinuxWindowsmacOS

CMake: Could not find a package configuration file

  • Обновлено
  • Чтение ≈ 4 минуты

Краткий ответ

CMake не нашёл библиотеку, указанную в find_package: она не установлена либо находится в нестандартном каталоге. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Установка библиотеки
  5. Указание пути
  6. Сборка и кэш

#Что означает ошибка

Сообщение
CMake Error: Could not find a package configuration file provided by "Boost"

Could not find a package configuration file provided by "Foo" в CMake означает, что команда find_package(Foo) не нашла файл FooConfig.cmake или foo-config.cmake. Библиотека либо не установлена, либо установлена в нестандартное место, либо не установлена часть для разработки (dev-пакет).

CMake сам подсказывает в тексте ошибки, какую переменную задать.

Нужно установить библиотеку и указать путь поиска.

CMake не нашёл библиотеку, указанную в find_package: она не установлена либо находится в нестандартном каталоге. Установите пакет разработки и укажите путь через CMAKE_PREFIX_PATH.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Библиотека не установленаНет пакета dev.Установите.
Нестандартный путьУстановлена вручную.Задайте CMAKE_PREFIX_PATH.
Другая архитектура32/64 бит.Проверьте.
Устаревший кэшCMakeCache.Удалите.

#Пошаговое решение

  1. Определите имя пакета из ошибкиОткройте терминал в корне проекта и повторите команду конфигурации CMake, сохранив полный текст ошибки. Найдите, что именно указано после find_package и какие имена перечислены: FooConfig.cmake, foo-config.cmake или FindFoo.cmake. Не вводите слово Foo буквально: это пример имени вашей библиотеки. Выполните cmake --version и проверьте, какой компилятор и способ сборки использует проект. Если ошибка относится к пакетам сборочной среды (например, MSVC), не начинайте с установки произвольной библиотеки под Linux.
  2. Установите dev-пакет библиотекиЕсли зависимость действительно не установлена, найдите официальное название её пакета разработки и версию, совместимую с вашим проектом. Для Linux используйте менеджер пакетов своего дистрибутива (apt, dnf), для macOS — выбранный проектом Homebrew, для Windows — vcpkg/Conan или комплект поставки производителя. Файл заголовка и файл FooConfig.cmake не всегда находятся в одном пакете; у некоторых библиотек предусмотрен режим Module, а не Config. Перед установкой проверьте документацию конкретного find_package(Foo CONFIG REQUIRED) и требования проекта.
  3. Найдите FooConfig.cmakeЧтобы найти конфигурацию уже установленной библиотеки, проверяйте известные каталоги установки и вывод менеджера пакетов, а не сканируйте весь / без необходимости. Например, в Linux выполните find /usr /opt -name 'FooConfig.cmake' 2>/dev/null, заменив Foo реальным именем; на Windows используйте поиск внутри папки SDK или vcpkg. Если файл найден, запишите каталог, в котором он лежит, и путь к префиксу установки. Если файл не найден, вернитесь к установке подходящего dev-пакета, а не создавайте пустой конфигурационный файл.
  4. Укажите путь в CMAKE_PREFIX_PATHЕсли FooConfig.cmake существует, CMake можно указать реальный путь через -DFoo_DIR=/путь/к/каталогу_с_конфигурацией либо префикс через -DCMAKE_PREFIX_PATH=/префикс/установки; это альтернативные подходы. Откройте новый пустой каталог сборки, например build-check, командой cmake -S . -B build-check -DFoo_DIR=/..., предварительно заменив Foo и путь. Не вставляйте строку /opt/foo без проверки, что там действительно установлена библиотека. После конфигурации запустите cmake --build build-check и изучите новую ошибку, если она появилась.
  5. Очистите кэш и запустите cmake зановоЕсли CMake продолжает использовать старый путь из кэша, проверьте переменные в отдельном каталоге сборки: cmake -LAH -N build-check выводит сохранённые значения. Лучше создать новый каталог с другим именем, чем удалять рабочий build через rm -rf: там могут быть созданные проектом файлы и настройки. Если нужная зависимость найдена, конфигурация закончится без Could not find a package configuration file. При следующем сообщении о несовместимой версии проверьте требования версии и архитектуру библиотеки, а не форсируйте старый конфиг.
  6. Замените Foo и путь на свои; работает в корне проекта
    Linux · Терминал (Bash)Команда
    Замените Foo и путь на свои; работает в корне проекта. Никакого удаления старого build.
    # Только после установки библиотеки и поиска её реального FooConfig.cmake:
    cmake -S . -B build-check -DFoo_DIR=/РЕАЛЬНЫЙ/КАТАЛОГ
    cmake --build build-check

#Установка библиотеки

Установите dev-пакет: Debian/Ubuntu — sudo apt install libfoo-dev; Fedora/Rocky — sudo dnf install foo-devel; Arch — sudo pacman -S foo; macOS — brew install foo; Windows — vcpkg install foo и toolchain-файл vcpkg. Найдите файл конфигурации: find / -name "FooConfig.cmake" 2>/dev/null или apt-file search FooConfig.cmake. Имя пакета в find_package чувствительно к регистру.

#Указание пути

Если библиотека установлена в нестандартный каталог, передайте путь: cmake -DFoo_DIR=/opt/foo/lib/cmake/Foo .. или cmake -DCMAKE_PREFIX_PATH=/opt/foo ... Переменные окружения: export CMAKE_PREFIX_PATH=/opt/foo:$CMAKE_PREFIX_PATH. Для pkg-config используйте export PKG_CONFIG_PATH=/opt/foo/lib/pkgconfig. Qt — -DCMAKE_PREFIX_PATH=/path/to/Qt/6.x/gcc_64.

#Сборка и кэш

После установки очистите кэш CMake: удалите папку build или файл CMakeCache.txt, иначе результат поиска «не найдено» запоминается. Проверьте версию: find_package(Foo 2.0 REQUIRED) может не подойти. Для проектов с модулем поиска используйте CMAKE_MODULE_PATH. Для vcpkg: -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake. Подробнее — cmake.org.

Linux · Терминал (Bash)Команда
Не выполняйте rm -rf build; поиск ограничен стандартными каталогами. На других ОС путь и утилиты отличаются.
# Диагностика на Linux, имя Foo заменить:
find /usr /opt -name "FooConfig.cmake" 2>/dev/null
# Команда конфигурации выполняется отдельно, после нахождения настоящего файла.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.