Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
DiffEreD
1444 / 781 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
1

Boost + Cmake + Clion

27.01.2015, 11:13. Просмотров 5285. Ответов 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()
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2015, 11:13
Ответы с готовыми решениями:

CMake, CLion, PDCurses
Возникли проблемы с подключением файлов библиотеки PDCurses. CMake находит ее, подключает, но потом...

Clion и SFML
Добрый день, уважаемые программисты. Недавно, у меня появилась довольно отличная идея, создать...

Запуск проекта в clion
Всем привет! У меня такая проблема: не могу запустить проект в clio, когда я запускаю проект...

сборка CMake* windows qt mingw53_32
Добрый день. Второй день пытаюсь собрать библиотеку libtorrent https://libtorrent.org/ под...

Ошибка генерации CodeBlocks проекта CMake`ом
Пожалуйста, подскажите как правильно сгенерировать CodeBlocks проект с CMake`ом. Опишу по шагам что...

5
Dmitriy_M
1434 / 1314 / 131
Регистрация: 20.03.2009
Сообщений: 4,688
Записей в блоге: 11
27.01.2015, 12:01 2
C
1
2
set(Boost_Path "C:/msys32/boost")
set(Boost_INCLUDE_DIR  "${Boost_Path}/include")
Этому не место в конфине.
1
DiffEreD
1444 / 781 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 12:15  [ТС] 3
Почему? Без этого у меня Boost не находится.
0
Dmitriy_M
1434 / 1314 / 131
Регистрация: 20.03.2009
Сообщений: 4,688
Записей в блоге: 11
27.01.2015, 12:25 4
Потому что никто не харкодит пути! У каждого буст в разных каталогах установлен.
Такие параметры передаются во время конфигурирования проекта, через cmake
Bash
1
cmake -DBoost_Path=путь ...
или cmake-gui, или где-нибудь в IDE должна быть форма настройки проекта.
1
DiffEreD
1444 / 781 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 13:04  [ТС] 5
Спасибо за подсказку. В параметрах проекта запустил CMake c параметром
Bash
1
-DBOOST_ROOT=C:/msys32/boost/include
Работает.
0
hoggy
Эксперт С++
7034 / 3238 / 662
Регистрация: 15.11.2014
Сообщений: 7,409
Завершенные тесты: 1
27.01.2015, 15:09 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}    )
1
27.01.2015, 15:09
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2015, 15:09

WinROS, CMake, MS VS 2008 и мечта об окошке
Нужна помощь товарищей, которые хорошо разбираются в CMake-файлах и пожелают помочь мне разобраться...

Typeid в clion
Почему при током коде CLion выводит 1T? И что это значит? #include <iostream> #include...

CLion x64 [Windows]
Как CLion заставить компилировать под x64 ?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru