Показаны сообщения с ярлыком boost. Показать все сообщения
Показаны сообщения с ярлыком boost. Показать все сообщения

воскресенье, 16 ноября 2014 г.

Boost for Windows (MinGW)

С удивлением обнаружил, что на SourceForge отсутствуют сборки библиотек boost с использованием mingw. По крайней мере я с ходу не нашел.
Т.к. я вынужден собирать свои проекты и под windows, то boost у меня под эту систему всегда имеется. Делюсь.
Пожалуйста, пользуйтесь: https://sourceforge.net/projects/boost-mingw/files/

UPD 11.01.2015
На sourceforge добавлена сборка boost 1.57 с использованием mingw 4.9.

UPD 26.04.2015
На sourceforge добавлена сборка boost 1.58 с использованием mingw 4.9.

UPD 30.08.2015
На sourceforge добавлена сборка boost 1.59 с использованием mingw 4.9.

UPD 19.12.2015
На sourceforge добавлена сборка boost 1.60 с использованием mingw 4.9.

UPD 14.05.2016
На sourceforge добавлена сборка boost 1.61 с использованием mingw 4.9.

UPD 07.08.2016
На sourceforge добавлена сборка boost 1.61 с использованием mingw 5.3.

UPD 17.10.2016
На sourceforge добавлена сборка boost 1.62 с использованием mingw 5.3.

UPD 28.12.2016
На sourceforge добавлена сборка boost 1.63 с использованием mingw 5.3.

UPD 15.05.2017
На sourceforge добавлена сборка boost 1.64 с использованием mingw 5.3.

UPD 23.08.2017
На sourceforge добавлена сборка boost 1.65 с использованием mingw 5.3.

UPD 10.09.2017
На sourceforge добавлена сборка boost 1.65.1 с использованием mingw 5.3.

UPD 17.09.2017
На sourceforge добавлена сборка boost 1.65.1 с использованием mingw 6.3.

UPD 20.12.2017
На sourceforge добавлены сборки boost 1.66 с использованием mingw 5.3, mingw 6.3 и mingw 7.2.

UPD 17.04.2018
На sourceforge добавлены сборки boost 1.67 с использованием mingw 5.3 и mingw 7.3.

UPD 14.07.2018
На sourceforge добавлена сборка boost 1.67 с использованием mingw 8.1.

UPD 12.08.2018
На sourceforge добавлена сборка boost 1.68 с использованием mingw 5.3 и mingw 8.1.

UPD 14.12.2018
На sourceforge добавлена сборка boost 1.69 с использованием mingw 8.1.

UPD 13.04.2019
На sourceforge добавлена сборка boost 1.70 с использованием mingw 8.1.

UPD 20.08.2019
На sourceforge добавлена сборка boost 1.71 с использованием mingw 7.3 и mingw 8.1.

UPD 12.12.2019
На sourceforge добавлена сборка boost 1.72 с использованием mingw 7.3 и mingw 8.1.

UPD 29.04.2020
На sourceforge добавлена сборка boost 1.72 с использованием mingw 9.2.

UPD 29.04.2020
На sourceforge добавлена сборка boost 1.73 с использованием mingw 9.2.
 
UPD 14.08.2020
На sourceforge добавлена сборка boost 1.74 с использованием mingw 9.2. 

UPD 14.12.2020
На sourceforge добавлена сборка boost 1.75 с использованием mingw 9.2. 
 
UPD 18.04.2021
На sourceforge добавлена сборка boost 1.76 с использованием mingw 9.2. 

UPD 15.08.2021
На sourceforge добавлена сборка boost 1.77 с использованием mingw 10.3.
 
UPD 12.12.2021
На sourceforge добавлена сборка boost 1.78 с использованием mingw 10.3.

UPD 17.04.2022
На sourceforge добавлена сборка boost 1.79 с использованием mingw 10.3.
 
UPD 15.08.2022
На sourceforge добавлена сборка boost 1.80 с использованием mingw 10.3.

UPD 17.12.2022
На sourceforge добавлена сборка boost 1.81 с использованием mingw 10.3.
 
UPD 23.04.2023
На sourceforge добавлена сборка boost 1.81 с использованием mingw 10.3.

UPD 25.02.2024
Ввиду того, что с позапрошлого года sourceforge стал необоснованно вешать на мои сборки boost ярлык "Warning! Malware detected. Download at your own risk.", я решил прекратить собирать данную библиотеку под mingw, а файлы, размещенные ранее на sourceforge, удалить. В своих проектах я перешел на использование компилятора и библиотек из проекта msys2.

пятница, 17 января 2014 г.

boost. Компиляция с помощью gcc (mingw) в Windows. Более простой метод

Ранее я уже описывал способ сборки библиотек boost под Windows средствами mingw. На сей раз хочу продемонстрировать значительно более простой вариант.
После загрузки архива boost и его распаковки, в первую очередь, необходимо скомпилировать утилиты сборки проекта. Для этого запускаем скрипт bootstrap.bat с соответствующим параметром (наш инструментарий, mingw).
bootstrap.bat mingw
После того, как скрипт завершит свою работу, мы можем запускать сборку boost.
b2 toolset=gcc --build-type=complete
Первоисточник: http://andres.jaimes.net/718/how-to-install-the-c-boost-libraries-on-windows/

UPD  14.05.2016

При  сборке boost версии 1.61 выяснилось, что необходимые команды теперь должны выглядеть чуток иначе (по крайней мере при использовании gcc из состава Qt).
bootstrap.bat gcc
b2 toolset=gcc --build-type=complete

вторник, 29 октября 2013 г.

Конфигурация cmake для проекта на C++ с использованием boost

Задача стояла следующая. Есть кроссплатформенный проект на C++ (назовем его, к примеру, boost_test), который использует библиотеки boost (для примера, boost-filesystem). Используемый компилятор - gcc. Необходимо сформировать файл CMakeLists.txt, обеспечив статическое связывание проекта с нужными библиотеками boost и gcc в среде windows и динамическое в GNU/Linux. А заодно и освоить cmake, к которому давно приглядывался.

В результате, CMakeLists.txt получился следующим.
cmake_minimum_required(VERSION 2.8)

project(boost_test)
set(APP_NAME boost_test)
set(CMAKE_BUILD_TYPE RELEASE)

aux_source_directory(src SRC_LIST)

set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -W -pedantic")

if(MINGW)
    set(Boost_USE_STATIC_LIBS ON)
    set(Boost_USE_SHARED_LIBS OFF)
else()
    set(Boost_USE_STATIC_LIBS OFF)
    set(Boost_USE_SHARED_LIBS ON)
endif()
find_package(Boost COMPONENTS system filesystem REQUIRED)
if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIR})
endif()
if(MINGW)
    set(BUILD_STATIC_LIBS ON)
    set(BUILD_SHARED_LIBS OFF)
    set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
else()
    set(BUILD_STATIC_LIBS OFF)
    set(BUILD_SHARED_LIBS ON)
endif()

add_executable(${PROJECT_NAME} ${SRC_LIST})
target_link_libraries(
    ${PROJECT_NAME}
    ${Boost_SYSTEM_LIBRARY}
    ${Boost_FILESYSTEM_LIBRARY}
    ${Boost_LIBRARIES}
)

Вдогонку, привожу несколько ссылок с неплохим, на мой взгляд, введением в cmake:
Хм.. И почему вот эти последние заметки не попались мне до того, как я закончил свой конфиг? Было бы куда проще, черт возьми )

boost. Компиляция с помощью gcc (mingw) в Windows

Оставим вводную в стороне и сразу за дело. На компьютере с Windows, где мне предстояло установить библиотеки boost, уже был установлен Qt, поэтому при сборке использовался mingw из комплекта Qt. Однако, ничто не мешает взять последнюю версию mingw отсюда. Итак, распаковываем скачанный архив boost и готовимся к сборке. Подготовка подразумевает правку файла bootstrap.bat и создание еще одного батника, назовем его build.bat. У меня содержимое этих файлов вышло следующее.

bootstrap.bat
@ECHO OFF

REM Copyright (C) 2009 Vladimir Prus
REM
REM Distributed under the Boost Software License, Version 1.0.
REM (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

SET MINGWDIR=c:\Qt\Qt5.1.1\Tools\mingw48_32\bin\
SET BOOSTDIR=c:\boost\1.54.0\
SET PATH=%MINGWDIR%;PATH

ECHO Building Boost.Build engine
if exist ".\tools\build\v2\engine\bin.ntx86\b2.exe" del tools\build\v2\engine\bin.ntx86\b2.exe
if exist ".\tools\build\v2\engine\bin.ntx86\bjam.exe" del tools\build\v2\engine\bin.ntx86\bjam.exe
if exist ".\tools\build\v2\engine\bin.ntx86_64\b2.exe" del tools\build\v2\engine\bin.ntx86_64\b2.exe
if exist ".\tools\build\v2\engine\bin.ntx86_64\bjam.exe" del tools\build\v2\engine\bin.ntx86_64\bjam.exe
pushd tools\build\v2\engine

call .\build.bat gcc > ..\..\..\..\bootstrap.log
@ECHO OFF

popd

if exist ".\tools\build\v2\engine\bin.ntx86\bjam.exe" (
   copy .\tools\build\v2\engine\bin.ntx86\b2.exe . > nul
   copy .\tools\build\v2\engine\bin.ntx86\bjam.exe . > nul
   goto :bjam_built)

if exist ".\tools\build\v2\engine\bin.ntx86_64\bjam.exe" (
   copy .\tools\build\v2\engine\bin.ntx86_64\b2.exe . > nul
   copy .\tools\build\v2\engine\bin.ntx86_64\bjam.exe . > nul
   goto :bjam_built)

goto :bjam_failure

:bjam_built

REM Ideally, we should obtain the toolset that build.bat has
REM guessed. However, it uses setlocal at the start and does
REM export BOOST_JAM_TOOLSET, and I don't know how to do that
REM properly. Default to msvc for now.
set toolset=msvc

ECHO import option ; > project-config.jam
ECHO. >> project-config.jam
ECHO using %toolset% ; >> project-config.jam
ECHO. >> project-config.jam
ECHO option.set keep-going : false ; >> project-config.jam
ECHO. >> project-config.jam

ECHO.
ECHO Bootstrapping is done. To build, run:
ECHO.
ECHO     .\b2
ECHO.    
ECHO To adjust configuration, edit 'project-config.jam'.
ECHO Further information:
ECHO.
ECHO     - Command line help:
ECHO     .\b2 --help
ECHO.     
ECHO     - Getting started guide: 
ECHO     http://boost.org/more/getting_started/windows.html
ECHO.     
ECHO     - Boost.Build documentation:
ECHO     http://www.boost.org/boost-build2/doc/html/index.html

goto :end

:bjam_failure

ECHO.
ECHO Failed to build Boost.Build engine.
ECHO Please consult bootstrap.log for furter diagnostics.
ECHO.
ECHO You can try to obtain a prebuilt binary from
ECHO.
ECHO    http://sf.net/project/showfiles.php?group_id=7586^&package_id=72941
ECHO.
ECHO Also, you can file an issue at http://svn.boost.org 
ECHO Please attach bootstrap.log in that case.

goto :end

:end
В этом файле, по сравнению с оригинальным, добавлены строки
SET MINGWDIR=c:\Qt\Qt5.1.1\Tools\mingw48_32\bin\
SET BOOSTDIR=c:\boost\1.54.0\
SET PATH=%MINGWDIR%;PATH
И изменена строка
call .\build.bat gcc > ..\..\..\..\bootstrap.log

build.bat
SET MINGWDIR=c:\Qt\Qt5.1.1\Tools\mingw48_32\bin\
SET BOOSTDIR=c:\boost\1.54.0\

SET PATH=%BOOSTDIR%;%MINGWDIR%;PATH
CD %BOOSTDIR%
b2.exe --build-dir=%BOOSTDIR% toolset=gcc --build-type=complete stage

После того, как необходимые файлы отредактированы/созданы, приступаем к сборке. Для этого необходимо запустить сначала bootstrap.bat, который произведет компиляцию утилит автоматизации сборки библиотеки boost, а затем - созданный нами build.bat, который запустит сборку самой boost.
В общем-то и все. Скомпилированные библиотеки можно будет найти в каталоге stage.

Первоисточник: http://studff.ru/blog/programming/85.html.

UPD 18.12.2014

Заглянул в статистику своего блога и был удивлен популярностью данной статьи. На сегодняшний день, при актуальной версии boost 1.57, подобных манипуляций делать уже не нужно. Имея установленный MinGW, boost можно спокойно собрать буквально двумя командами (из каталога с исходниками).
bootstrap mingw
b2 toolset=gcc --build-type=complete

UPD 24.04.2017

Рекомендуется к прочтению заметка boost. Компиляция с помощью gcc (mingw) в Windows. Более простой метод