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

1 апр. 2009 г.

Сборка библиотеки LibTorrent

прочитайте прежде статью: Development Environment Settings

Сборка с помощью Visual Studio 2005

cd "%LIBRARIES_ROOT%libtorrent"

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static debug logging=none dht-support=on runtime-link=static asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static release logging=none dht-support=on runtime-link=static asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static debug logging=none dht-support=on runtime-link=static asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static release logging=none dht-support=on runtime-link=static asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static debug logging=none dht-support=on runtime-link=shared asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static release logging=none dht-support=on runtime-link=shared asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static debug logging=none dht-support=on runtime-link=shared asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-8.0 link=static release logging=none dht-support=on runtime-link=shared asynch-exceptions=off character-set=unicode openssl=pe

Сборка с помощью Visual Studio 2008
set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static debug logging=none dht-support=on runtime-link=static asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static release logging=none dht-support=on runtime-link=static asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static debug logging=none dht-support=on runtime-link=static asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static release logging=none dht-support=on runtime-link=static asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static debug logging=none dht-support=on runtime-link=shared asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static release logging=none dht-support=on runtime-link=shared asynch-exceptions=on character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static debug logging=none dht-support=on runtime-link=shared asynch-exceptions=off character-set=unicode openssl=pe

set INCLUDE=%BOOST_ROOT%;%LIBRARIES_ROOT%\libtorrent;%LIBRARIES_ROOT%\openssl\include;
CALL "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSVARS32.BAT"
%LIBRARIES_ROOT%boost-jam-3.1.17\bin.ntx86\bjam --v2 toolset=msvc-9.0 link=static release logging=none dht-support=on runtime-link=shared asynch-exceptions=off character-set=unicode openssl=pe


P.S.: Смотри также:
http://www.rsdn.ru/forum/network/3404574.flat.aspx#3404574
http://www.rsdn.ru/forum/dotnet/3404592.flat.aspx#3404592

Сборка библиотеки OpenSSL

Сборка с помощью Visual Studio 2005:
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

rem set PATH=%MSSDK6DIR%\VC\Bin;%PATH%
call "c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Сборка с помощью Visual Studio 2008:
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

rem set PATH=%MSSDK6DIR%\VC\Bin;%PATH%
call "c:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Сборка с помощью Vista SDK
set OPTS=no-asm

perl Configure VC-WIN32
perl util\mkfiles.pl >MINFO
perl util\mk1mf.pl %OPTS% debug VC-WIN32 >d32.mak
perl util\mk1mf.pl %OPTS% VC-WIN32 >32.mak
perl util\mk1mf.pl %OPTS% debug dll VC-WIN32 >d32dll.mak
perl util\mk1mf.pl %OPTS% dll VC-WIN32 >32dll.mak
perl util\mkdef.pl 32 libeay > ms\libeay32.def
perl util\mkdef.pl 32 ssleay > ms\ssleay32.def

@SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 8
@SET VCINSTALLDIR=%VSINSTALLDIR%\VC
@SET FrameworkDir=c:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET FrameworkSDKDir=%VSINSTALLDIR%\SDK\v2.0
@set DevEnvDir=%VSINSTALLDIR%\Common7\IDE
@set PATH=%MSSDK6DIR%\VC\Bin;%VSINSTALLDIR%\Common7\IDE;%VCINSTALLDIR%\BIN;%VSINSTALLDIR%\Common7\Tools;%VSINSTALLDIR%\Common7\Tools\bin;%VCINSTALLDIR%\PlatformSDK\bin;%VSINSTALLDIR%\SDK\v2.0\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%VCINSTALLDIR%\VCPackages;%PATH%
@set INCLUDE=%MSSDK6DIR%\Include;%MSSDK6DIR%\VC\INCLUDE;%VCINSTALLDIR%\ATLMFC\INCLUDE;%VCINSTALLDIR%\INCLUDE;%VCINSTALLDIR%\PlatformSDK\include;%VSINSTALLDIR%\SDK\v2.0\include;%INCLUDE%
@set LIB=%MSSDK6DIR%\Lib;%MSSDK6DIR%\VC\LIB;%VCINSTALLDIR%\ATLMFC\LIB;%VCINSTALLDIR%\LIB;%VCINSTALLDIR%\PlatformSDK\lib;%VSINSTALLDIR%\SDK\v2.0\lib;%LIB%
@set LIBPATH=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%VCINSTALLDIR%\ATLMFC\LIB

nmake -f d32.mak
@if errorlevel 1 goto end
nmake -f 32.mak
@if errorlevel 1 goto end
nmake -f d32dll.mak
@if errorlevel 1 goto end
nmake -f 32dll.mak

:end

Скрипт для инсталла:
set OPENSSL_ROOT=%~dp0
set TOOLSET=%1%

cd %OPENSSL_ROOT%
call :CreateDirectories
call :MoveOutFiles
call :RemoveOldDirectories
goto end

:CreateDirectories
mkdir lib
cd ./lib
mkdir %TOOLSET%
cd ./%TOOLSET%
mkdir debug
cd ./debug
mkdir shared
mkdir static
cd ..
mkdir release
cd ./release
mkdir shared
mkdir static
cd ..
exit /b

:MoveOutFiles
cd %OPENSSL_ROOT%
move %OPENSSL_ROOT%out32\* %OPENSSL_ROOT%lib\%TOOLSET%\release\static\
move %OPENSSL_ROOT%out32dll\* %OPENSSL_ROOT%lib\%TOOLSET%\release\shared\
move %OPENSSL_ROOT%out32.dbg\* %OPENSSL_ROOT%lib\%TOOLSET%\debug\static\
move %OPENSSL_ROOT%out32dll.dbg\* %OPENSSL_ROOT%lib\%TOOLSET%\debug\shared\
cd %OPENSSL_ROOT%
exit /b

:RemoveOldDirectories
del /S /Q %OPENSSL_ROOT%out32\*
del /S /Q %OPENSSL_ROOT%out32dll\*
del /S /Q %OPENSSL_ROOT%out32.dbg\*
del /S /Q %OPENSSL_ROOT%out32dll.dbg\*
del /S /Q %OPENSSL_ROOT%out32
del /S /Q %OPENSSL_ROOT%out32dll
del /S /Q %OPENSSL_ROOT%out32.dbg
del /S /Q %OPENSSL_ROOT%out32dll.dbg
del /S /Q %OPENSSL_ROOT%tmp32\*
del /S /Q %OPENSSL_ROOT%tmp32dll\*
del /S /Q %OPENSSL_ROOT%tmp32.dbg\*
del /S /Q %OPENSSL_ROOT%tmp32dll.dbg\*
del /S /Q %OPENSSL_ROOT%tmp32
del /S /Q %OPENSSL_ROOT%tmp32dll
del /S /Q %OPENSSL_ROOT%tmp32.dbg
del /S /Q %OPENSSL_ROOT%tmp32dll.dbg
exit /b

:end

P.S.: Возможно после конфигурации придётся слегуа поправить make-файлы, поскольку собирают они библиотеку не во всех возможных конфигурациях. Например когда собирается статическая версия OpenSSL, то с С++ CRT она линкуется статически, если же собирается динамическая версия OpenSSL, то она с С++ библиотекой линкуется динамически. Скажем если вы хотите собрать статическую версию OpenSSL, а запользовать её в проекте, линкующимся с CRT динамически, вот тогда и придётся править фалики.


Смотри также: Compiling OpenSSL for Windows, Linux, and Macintosh

Библиотека Boost

Boostсобрание библиотек, расширяющих C++. Cвободно распространяются по лицензии Boost Software License вместе с исходным кодом. Проект был создан после принятия стандарта C++, когда многие были недовольны не включением в стандарт некоторых библиотек. Проект является своего рода «испытательным полигоном» для различных расширений языка и часть библиотек являются кандидатами на включение в следующий стандарт C++.

Boost имеет заметную направленность на исследования и расширяемость (метапрограммирование и обобщённое программирование с активным использованием шаблонов). Благодаря тщательному подбору и контролю качества, библиотеки, включённые в Boost, обладают высокой надёжностью и производительностью. У "велосипедов" из boost существует огромное количество пользователей - С++ разработчиков, поэтому код библиотек boost является очень хорошо протестирован и является очень надёжным.

Крайне рекомендую данную коллекцию библиотек всем C++ разработчикам для использования в своих проектах. Вместо написания собственных велосипедов, лучше загляните в boost, не присутствует ли там уже готовое решение, поскольку качество вашего велосипеда будет насравнимо ниже чем boost'овского аналога, потому что пользователем вашего вилосипеда будете только вы и оттестировать его во всех возможных случаях вы не сможете физически. Если вас не совсем устроит эффективность некоторых библиотек из boost (как например boost::lexical_cast), то не забывайте, что библиотеки boost чрезвычайно гибки и вы всегда можете расширить функциональность того или иного велосипеда с помощью C++ шаблонов (скажем, специализировать шаблон boost::lexical_cast<> для определённого типа), предоставив свою "эффективную реализацию".

 
 

 
 

Сборка библиотеки Boost

  • Качаем архив с исходными текстами здесь: http://www.boost.org/users/download/
  • Распаковываем архив в директорию %BOOST_ROOT% (см. статью Development Environment Settings).

    Все что вам надо знать на первое время - это:
  • %BOOST_ROOT%\
    |---- tools       - инструменты, в частности bjam
    |---- boost       - заголовочные файлы boost
    |---- libs        - документация
    |---- lib   - динамические и статические библиотеки, появятся после сборки
    |---- index.html  - начало знакомства с boost
    ...
    
  • Собираем bjam и настраиваем Boost.Build

    Bjam - это мощная утилита, автоматизирующая процесс сборки. Boost.Build - это система сборки на базе bjam, набор скриптов для множества компиляторов, позволяет управлять ими через единый интерфейс. Т.е. вам не надо знать как, например, для gcc настроить precompiled headers…

    Запускаем "%BOOST_ROOT%\tools\jam\build_dist.bat", который собирет bjam.exe

    Теперь копируем bjam.exe из "%BOOST_ROOT%\tools\jam\stage\boost-jam-3.1.17-1-ntx86? в "%SystemRoot%\system32" или добавляем директорию "%BOOST_ROOT%\tools\jam\stage\boost-jam-3.1.17-1-ntx86" в системную переменную PATH. Что бы проверить, что все идет по плану - запускаем консоль и выполняем команду:
  • bjam.exe
    

    В результате должны получить сообщение:

    Unable to load Boost.Build: could not find "boost-build.jam"
    ---------------------------------------------------------------
    Attempted search from C:\Documents and Settings\Tanya up to the root
    and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: D:\c++\libs\boost
    _trunk\tools\build\v21, D:\c++\libs\boost_trunk1.
    Please consult the documentation at 'http://www.boost.org'.
    
    Это сообщене говорит нам о том, что надо настроить Boost.Build. Для верной работы Boost.Build необходимо существование двух переменных: BOOST_ROOT - указывает на корневую директорию, куда мы изначально распаковали boost архив (см. статью Development Environment Settings) BOOST_BUILD_PATH - указывает на %BOOST_ROOT%\tools\build\v2 Важно! Не ставте слэши в конце! Напомню, что установить системные переменные можно в Панель управления -> Система -> Дополнительно -> Переменные среды -> Системные переменные Запускаем консоль и выполняем команду:
    bjam.exe
    

    Если вы получили следующее сообщение значит вы на правильном пути:

    warning: No toolsets are configured.
    warning: Configuring default toolset "msvc".
    warning: If the default is wrong, your build may not work correctly.
    warning: Use the "toolset=xxxxx" option to override our guess.
    warning: For more configuration options, please consult
    warning: http://boost.org/boost-build2/doc/html/bbv2/advanced/configuration.html
    
    error: error: no Jamfile in current directory found, and no target references sp
    ecified.
    
  • Завершающая стадия - компиляция boost.

    Создаем %BOOST_ROOT%\build.bat с содержимым:
  • @echo off
    bjam ^
        -j2 ^
        --toolset=msvc-8.0 ^
        release debug ^
        --without-math ^
        --without-graph ^
        --without-python ^
        threading=multi link=static link=shared runtime-link=static runtime-link=shared ^
       stage --stagedir="./lib";
       pause
    
    -j2 - задействовать два ядра, с целью увеличения скорости компиляции --toolset=msvc-8.0 - инструмент с помощью которого собирать boost (gcc, msvc-8.0, msvc-9.0) release debug - без коментариев --without-math - не собирать Boost.Math --without-graph - не собирать Boost.Graph --without-python - не собирать Boost.Python threading=multi link=static link=shared runtime-link=static runtime-link=shared - настраиваем сборку, думаю тут все понятно stage - директория, в торорую будут помещены статические и динамические библиотеки Скажу сразу, что процесс сборки достаточно долгий, на моей машине он занимает около 20 минут и требует около 4гб места на диске.
  • Для использования boost в своих проектах, настраивайте конфигурацию проектов следующим образом:
    Добавьте путь "$(BOOST_ROOT)" в список "Additional Include Directories" опций компиллятора.
    Добавьте путь "$(BOOST_ROOT)\lib" в список "Additional Library Directories" опций линкера.
    Многие добавляют эти пути в "Tools/Options/Projects and Solutions/VC++ Directories", однако я так не делаю, и вам не рекомендую, ибо "юзаю/неюзаю" boost есть свойство отдельно проекта, ну накрайняк solution'а, а никак не всей студии, ведь не все проекты, которые, возможно, у вас собираются, зависят от boost, соответсвенно нехрен всяким неандертальским проектам иметь видимость boost'овских заголовочных файлов.

Частично стянуто отсюда: http://www.gigamega.net/category/boost/

P.S.: Я Boost собираю следующим образом:

"bjam.exe" -j 12 --buid-dir="build" --build-type=complete --toolset=msvc-8.0 address-model=32  --stagedir="./lib" stage
"bjam.exe" -j 12 --buid-dir="build" --build-type=complete --toolset=msvc-9.0 address-model=32  --stagedir="./lib" stage

P.P.S.: Улыбнуло мнение, взятое отсюда: http://www.gigamega.net/category/boost/ :):) :
Некоторые C++ программисты используют boost, некоторые о нем только слышали, некоторые - нет. Так вот, последние 2 категории - тупиковая ветвь развития (о тех, кому не позволяет железо или компилятор я не говорю), как правило, такие люди даже не доросли до стандартной библиотеки, а их стиль программирования можно назвать “Си с классами”.

P.P.S.: Удачи вам в использовании Boost в ваших проектах!