Nano Hash - криптовалюты, майнинг, программирование

Как изменить, где CMakeLists.txt ищет Boost Libraries Ubuntu

Я использовал Boost 1.54.0, и он находился в «/usr/include». Мы выбросили это из головы и установили Boost 1.57.0. Он был установлен в «/usr/local/include».

Теперь мой проект CLion, использующий CMake, не может найти библиотеку Boost. Вот мой файл CMakeLists.txt:

введите здесь описание изображения

И вот мои ошибки:

введите здесь описание изображения

Я понятия не имею, как заставить CMake выглядеть в правильном месте для Boost.

13.04.2015

  • кажется, вы забыли добавить CMakeLists.txt содержимое и описание ошибки. 14.04.2015
  • Для кода (также кода CMake) используйте копирование и вставку, выберите вставленный код и нажмите кнопку {} 14.04.2015

Ответы:


1

Согласно документации FindBoost (http://www.cmake.org/cmake/help/v3.1/module/FindBoost.html), вы можете установить переменную CMake BOOST_ROOT, чтобы дать CMake подсказку о том, где искать.

В файле CMakeLists.txt перед строкой find_package(Boost...) можно добавить следующее:

set(BOOST_ROOT /usr/local)

Обновление: я согласен с комментариями о том, что помещать параметры конфигурации машины непосредственно в CMakeLists.txt не рекомендуется.

В качестве альтернативы прямой установке этой переменной вы можете передать подобные параметры процессу cmake в CLion, выполнив следующие действия:

Перейдите к File -> Settings... -> Build, Execution, and Deployment -> CMake. Под Generation добавьте -DBOOST_ROOT=/usr/local к CMake options.

14.04.2015
  • … или используйте опцию -DBOOST_ROOT=/some/path CLI при запуске cmake 14.04.2015
  • Это работает, если вы создаете каталог сборки в командной строке, но этот вопрос касался установки пути префикса boost в проекте CLion. Другой вариант — вручную отредактировать кеш CMake в самом CLion. 14.04.2015
  • в любом случае наличие жестко закодированных (специфичных для хоста разработчика) путей в CMakeLists.txt - плохая идея. 14.04.2015
  • +1 за хорошую ссылку на документацию. Однако Зауфи прав. Мое предложение состояло бы в том, чтобы установить кешированную переменную set(BOOST_CUSTOM_ROOT "" CACHE STRING "Hint for boost installation location"), а затем проверить, изменяет ли пользователь эту переменную, if(BOOST_CUSTOM_ROOT) set(BOOST_ROOT ${BOOST_CUSTOM_ROOT}) endif() Пользователь может изменить эту переменную, например, из cmake-gui (с помощью этого трюка после первой настройки переменная доступна), командная строка или любой другой инструмент, связанный с CLion. 14.04.2015
  • @JohnDrouhard - у меня проблемы со связью. Вопрос здесь: stackoverflow.com/q/29638539/1735836 Если вам интересно!! :-) 15.04.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..