Почему интегрированный CMake CLion не может найти установленные пакеты?

#c #linux #cmake #clion

#c #linux #cmake #clion

Вопрос:

У меня есть проект на C , описанный CMakeLists.txt файл, из которого CMake успешно генерирует MAKE-файл, если я вызываю CMake из терминала. (Это на Ubuntu.)

Проект зависит от Boost и Eigen, которые оба установлены в моей системе. Я вижу, что Boost включает в себя /usr/include/boost , двоичные файлы Boost /usr/lib/x86_64-linux-gnu и файлы Boost .cmake /usr/lib/x86_64-linux-gnu/cmake/ . Я вижу собственные заголовки внутри /usr/include/eigen3 и Eigen3Config.cmake внутри /usr/lib/cmake/eigen3 .

Мой CMakeLists.txt вызовы файлов find_package в режиме конфигурации, как показано ниже:

 find_package(Eigen3 CONFIG REQUIRED)
if (${Eigen3_FOUND})
   Message(STATUS "eigen found...")
endif (${Eigen3_FOUND})

find_package(Boost 1.7 CONFIG REQUIRED QUIET)
if (${Boost_FOUND})
    Message(STATUS "boost found...")
endif (${Boost_FOUND})
 

Вышеуказанное работает, как и ожидалось, из командной строки, но когда я пытаюсь открыть проект из CLion 2020.2.3, я получаю следующую ошибку

Ошибка CMake в CMakeLists.txt:4 (find_package): не удалось найти файл конфигурации пакета, предоставленный «Eigen3» с любым из следующих имен:

 Eigen3Config.cmake
eigen3-config.cmake
 

Добавьте установочный префикс «Eigen3» в CMAKE_PREFIX_PATH или установите
«Eigen3_DIR» в каталог, содержащий один из вышеупомянутых файлов. Если
«Eigen3» предоставляет отдельный пакет разработки или SDK, убедитесь, что он
был установлен.

Если я изменю порядок find_package вызовов, CMake не сможет найти boost аналогичным образом.

Ответ №1:

На самом деле такое поведение, похоже, было результатом установки CLion как пакета flatpak. Я удалил и переустановил как обычные двоичные файлы, и проблема исчезла. (новичок в Linux здесь …)

Это та же проблема, что и описанная здесь: Jetbrains YouTrack. Похоже, что проблема заключается в том, чтобы не устанавливать продукты JetBrains через Flatpak.