1454 / 791 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
1

Boost + Cmake + Clion

27.01.2015, 11:13. Показов 9529. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2015, 11:13
Ответы с готовыми решениями:

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

Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт ошибку
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт...

Не линкуется FreeGLUT в CMake (CLion)
Доброго времени суток. Никак не могу прилинковать FreeGLUT в CMake (который в CLion). FreeGLUT...

Как OpenSSL добавить в линковку CLion (используется cmake и mingw)
Приветствую, друзья. Как добавить OpenSSL в линковку проекта? Я видел FingOpenSSL (cmake), но...

5
1441 / 1322 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
27.01.2015, 12:01 2
C
1
2
set(Boost_Path "C:/msys32/boost")
set(Boost_INCLUDE_DIR  "${Boost_Path}/include")
Этому не место в конфине.
1
1454 / 791 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 12:15  [ТС] 3
Почему? Без этого у меня Boost не находится.
0
1441 / 1322 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
27.01.2015, 12:25 4
Потому что никто не харкодит пути! У каждого буст в разных каталогах установлен.
Такие параметры передаются во время конфигурирования проекта, через cmake
Bash
1
cmake -DBoost_Path=путь ...
или cmake-gui, или где-нибудь в IDE должна быть форма настройки проекта.
1
1454 / 791 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
27.01.2015, 13:04  [ТС] 5
Спасибо за подсказку. В параметрах проекта запустил CMake c параметром
Bash
1
-DBOOST_ROOT=C:/msys32/boost/include
Работает.
0
Эксперт С++
8562 / 4136 / 910
Регистрация: 15.11.2014
Сообщений: 9,337
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2015, 15:09

[CLion] настройка дебагера на Windows 10. Не работает дебаг с профилем Visual Studio или CMake с профилем MinGW
Сделал скриншоты с настройками. Как это дело настроить? На Mac OS поставил, всё работает из...

Сборка проекта cmake с вложенными cmake
Всем привет. Подскажите пожалуйста вот у меня есть проектный файл и в нем мне надо как то обьявить...

Boost и Cmake
Я пытаюсь подключить Boost к проекту с использованием Cmake. Получается, что-то в этом роде: ...

Boost & CMake
Проблема, наверно больше в CMake, нежели в бусте. В общем имеем симейковский файл вида: ...


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

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

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