Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

Boost + Cmake + Clion - C++

27.01.2015, 11:13. Просмотров 2628. Ответов 5
Метки нет (Все метки)

Помогите мне подключить Boost к Clion на Windows. Перепробовал уже кучу вариантов - ничего не выходит, заголовки только инклудятся, а библиотеки походу не подключаются. Вот мой пример CMakeLists.txt
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cmake_minimum_required(VERSION 2.8.4)
project(Cyberforum)
 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#set(CMAKE_EXE_LINKER_FLAGS -static)
 
set(SOURCE_FILES main.cpp)
add_executable(Cyberforum ${SOURCE_FILES})
 
set(Boost_Path "C:/msys64/boost")
set(Boost_INCLUDE_DIR  "${Boost_Path}/include")
set(Boost_LIBRARY_DIR  "${Boost_Path}/lib")
 
set(Boost_USE_STATIC_LIBS        ON) # only find static libs
set(Boost_USE_MULTITHREADED      ON)
#set(Boost_USE_STATIC_RUNTIME    OFF)
find_package(Boost 1.57.0)
if(Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIRS})
  target_link_libraries(Cyberforum ${Boost_LIBRARY_DIR})
endif()
Я особо в Cmake не разбираюсь - все время пользовался QtCreator, - там через pro файл как то проще было.
Boost у меня находится в папке C:\msys64\boost с инклудами и либами по разным папкам.

Добавлено через 12 часов 17 минут
Кажись разобрался. Подсмотрел тут : How do you add boost libraries in CMakeLists.txt Правда, сделал через CMake в связке с QtCreator (вечером попробую с Clion). Вот такой конфиг у меня заработал:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
set(Boost_Path "C:/msys32/boost")
set(Boost_INCLUDE_DIR  "${Boost_Path}/include")
 
set(Boost_USE_STATIC_LIBS       ON)
set(Boost_USE_MULTITHREADED     ON)
set(Boost_USE_STATIC_RUNTIME   OFF)
find_package(Boost 1.56.0 COMPONENTS filesystem system)
 
if(Boost_FOUND)
  include_directories(${Boost_INCLUDE_DIRS})
  target_link_libraries(Cyberforum ${Boost_LIBRARIES})
endif()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2015, 11:13     Boost + Cmake + Clion
Посмотрите здесь:

использование boost и boost.build с несколькими компиляторами Boost C++
Boost C++ Boost & CMake
Boost C++ Метапрограммирование в boost::proto (boost::spirit)
Boost pre build vs cmake find Boost C++
Boost начало работы: Undefined reference to `boost::system::generic_category() ' Boost C++
Visual Studio vs CLion C++
Миграция с QT Creator на CLion C++
Boost Log - undefined reference to `boost::system::system_category()' Boost C++
Крокозябры в консоли CLion C++
Запуск проекта в clion C++
Qt и boost boost::system::generic_category() Boost C++
Как OpenSSL добавить в линковку CLion (используется cmake и mingw)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitriy_M
1322 / 1203 / 109
Регистрация: 20.03.2009
Сообщений: 4,306
Записей в блоге: 11
27.01.2015, 12:01     Boost + Cmake + Clion #2
C
1
2
set(Boost_Path "C:/msys32/boost")
set(Boost_INCLUDE_DIR  "${Boost_Path}/include")
Этому не место в конфине.
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 12:15  [ТС]     Boost + Cmake + Clion #3
Почему? Без этого у меня Boost не находится.
Dmitriy_M
1322 / 1203 / 109
Регистрация: 20.03.2009
Сообщений: 4,306
Записей в блоге: 11
27.01.2015, 12:25     Boost + Cmake + Clion #4
Потому что никто не харкодит пути! У каждого буст в разных каталогах установлен.
Такие параметры передаются во время конфигурирования проекта, через cmake
Bash
1
cmake -DBoost_Path=путь ...
или cmake-gui, или где-нибудь в IDE должна быть форма настройки проекта.
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 13:04  [ТС]     Boost + Cmake + Clion #5
Спасибо за подсказку. В параметрах проекта запустил CMake c параметром
Bash
1
-DBOOST_ROOT=C:/msys32/boost/include
Работает.
hoggy
5734 / 2316 / 419
Регистрация: 15.11.2014
Сообщений: 5,171
Завершенные тесты: 1
27.01.2015, 15:09     Boost + Cmake + Clion #6
Код
macro(add_boost_component)

     #--- в случае ошибок, расскоментируйте, 
     #---- что бы посмотреть, где ищейка пыталась его найти
#    set(Boost_DEBUG 1)

    #--- отключает msvc автоматику подключения в хэдэрах
    #--- (для большей кросс-платформы)
    add_definitions( -DBOOST_ALL_NO_LIB )

    #--- пользователь должен указать пути
    set(BOOST_ROOT ${MY_EXTERNAL_PATH_boost})
    set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib${MY_AMODEL})

#    debug_msg("BOOST_ROOT ......... ${BOOST_ROOT}")
#    debug_msg("BOOST_LIBRARYDIR ... ${BOOST_LIBRARYDIR}")

    set(Boost_USE_STATIC_LIBS   ON)
    set(Boost_USE_MULTITHREADED ON)

    #--- укажите список компонентов (regex/filesystem/etc)
    find_package(Boost COMPONENTS ${boost_COMPONENTS} REQUIRED)
    if(NOT Boost_FOUND)
        message(FATAL_ERROR "Boost NOT FOUND: " ${BOOST_ROOT} )
    endif()
    add_definitions(-DBOOST_THREAD_USE_LIB)
endmacro()


Результаты можно забрать так:

Код
    list(APPEND MT_HEADERS       ${Boost_INCLUDE_DIRS} )
    list(APPEND MT_LIBRARY_DIRS  ${Boost_LIBRARY_DIRS} )
    list(APPEND MT_DEPENDENCIES  ${Boost_LIBRARIES}    )
Yandex
Объявления
27.01.2015, 15:09     Boost + Cmake + Clion
Ответ Создать тему
Опции темы

Текущее время: 22:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru