У меня есть следующие настройки для разработки на C ++:
OS X Yosemite
CLion 140.2310.6
(кросс-платформенная C / C ++ - IDE от JetBrains, использующаяCMake
в качестве системы сборки)- установлен
boost
черезbrew install boost
в/usr/local/Cellar/boost/
Теперь моя цель - настроить простой проект и включить библиотеку boost
. Я определил только один файл test.cpp, который выглядит так:
#include <iostream>
#include <boost>
using namespace std;
int test() {
cout << "Hello, World!" << endl;
return 0;
}
Мой файл CMakeLists.txt выглядит так:
cmake_minimum_required(VERSION 2.8.4)
project(MyProject)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories("/usr/local/Cellar/boost/1.57.0/include/boost")
set(SOURCE_FILES main.cpp ./test.cpp)
add_executable(MyProject ${SOURCE_FILES})
Когда я создаю проект, я получаю следующую ошибку:
/Users/nburk/Documents/uni/master/master_thesis/MyProject/test.cpp:2:10: фатальная ошибка: файл 'boost' не найден
make [3]: *** [CMakeFiles / MyProject.dir / test.cpp.o] Ошибка 1 make [2]: *** [CMakeFiles / MyProject.dir / all] Ошибка 2 make [1]: *** [CMakeFiles / MyProject.dir / rule] Ошибка 2 make: *** [MyProject] Ошибка 2
Я экспериментировал с настройкой путей здесь и там, а также использовал add_library
и target_link_libraries
, ни один из которых не помог успешно построить проект.
Может ли кто-нибудь указать правильное направление, как убедиться, что я могу включить функциональность boost
s в свой проект CLion C ++?
Обновление: благодаря ответу @ Waxo я использовал следующий код в моем файле CMakeLists.txt, который:
set(Boost_INCLUDE_DIR /usr/local/Cellar/boost/1.57.0)
set(Boost_LIBRARY_DIR /usr/local/Cellar/boost/1.57.0/lib)
find_package(Boost COMPONENTS system filesystem REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
Теперь я пропустил ошибку файл не найден, но вместо этого получаю следующее:
Ошибка CMake в / Applications / CLion EAP.app/Contents/bin/cmake/share/cmake-3.1/Modules/FindBoost.cmake:685 (файл):
файл STRINGS файл "/usr/local/Cellar/boost/1.57.0/boost/version.hpp" не может быть прочитан.
Стек вызовов (сначала последний вызов): CMakeLists.txt: 11 (find_package)
Есть идеи, что мне все еще не хватает? Ссылочная строка (685) в FindBoost.cmake: file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ")
Boost
вручную.find_package
должно работать из коробки. Если это не так, вы должны передатьBoost_DIR
командеcmake
. Не записывайте системные пути в CMakeLists.txt. Вся суть cmake в том, чтобы быть кроссплатформенным. Конфигурация, специфичная для платформы, требуется редко, и если это способ сделать, это передать параметры конфигурации через командную строку или через cmake-gui. - person sbabbi   schedule 27.02.2015/usr/local/cellar
). Правильный способ уведомить cmake о необходимости повышения в этом каталоге нужно вызвать cmake сcmake -DBOOST_ROOT=/usr/local/Cellar/boost/1.57.0 ...
- person sbabbi   schedule 27.02.2015