Личный опыт разработки ПО

Сборник рецептов

CMake и Boost

Комментариев: 2

В этой заметке я хочу рассмотреть тему сборки проектов использующих библиотеки Boost. Мы рассмотрим проект из исполняемого файла использующего Boost Thread и двух библиотек использующих Boost Unit Test Framework.

Первым делом необходимо установить значения переменных отвечающих за тип линковки библиотек (статическая или динамическая):

set (Boost_USE_STATIC_LIBS ON)

И использование многопоточности библиотеками:

set (Boost_USE_MULTITHREADED ON)

После этого можно выполнить уже знакомую по заметке о CMake и QT команду find_package:

find_package (Boost COMPONENTS список_нужных_модулей REQUIRED)

Дополнительно можно указать необходимую версию Boost:

find_package (Boost 1.35.0 COMPONENTS список_нужных_модулей REQUIRED)

В случае если Boost корректно установлен, результатом работы команды будет создание переменных содержащих директории с заголовочными файлами Boost и пути к необходимым библиотекам:

include_directories(${Boost_INCLUDE_DIRS})
...
target_link_libraries (${PROJECT} ${Boost_LIBRARIES})

Дополнительная информация

На некоторых платформах могут возникать ошибки линковки при использовании многопоточности. Для решения данной проблемы необходимо добавить следующую команду:

find_package (Threads)
...
target_link_libraries (${PROJECT} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES})

Пример готового файла для CMake

cmake_minimum_required (VERSION 2.6)
 
set (PROJECT 
	test)
 
set (HEADERS 
	../test.h)
 
set (SOURCES 
	../test.cpp)
 
set (BOOST_COMPONENTS 
	thread
	filesystem)
 
set (Boost_USE_STATIC_LIBS ON)
 
set (Boost_USE_MULTITHREADED ON)
 
project (${PROJECT})
 
include_directories (../)
 
find_package (Threads)
 
find_package (Boost COMPONENTS ${BOOST_COMPONENTS} REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
 
add_executable (${PROJECT} ${HEADERS} ${SOURCES})
 
target_link_libraries (${PROJECT} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES})

Файл с примером проекта

Шаблон для сборки приложения использующего Boost

В архиве находится шаблон CMake-файла используя который вы сможете быстро создать проект использующий Boost. Просто отредактируйте несколько переменных находящихся в самом начале файла:

set (PROJECT 
	имя_проекта)
 
set (HEADERS 
	список_заголовочных_файлов)
 
set (SOURCES 
	список_файлов_с_реализацией)
 
set (LIBRARIES
	список_библиотек)
 
set (BOOST_COMPONENTS 
	список_модулей)
 
set (Boost_USE_STATIC_LIBS ON)
 
set (Boost_USE_MULTITHREADED ON)

Файл с шаблоном проекта

23 января 2010
18:48

Рубрика: Разработка, Сборка

Метки: ,

2 коммент. к 'CMake и Boost'

Подписаться на комментарии по RSS или TrackBack.

  1. >В случае если Boost корректно установлен
    Я правильно понимаю что если не корректно установлен единственный способ это руками прописывать к нему путь?

    Begemot

    4 марта 10 17:19

  2. Правильно. А еще установить правильно для Windows – это прописать в системную переменную путь к корневой директории boost (надо убедиться, что boost был собран), остальное модуль find_boost сделает сам.

Оставить комментарий

Я не робот!