Monday, January 16, 2017

Boost Kütüphanesinin Visual Studio 2015'de Kullanımı

Boost projesi, C++ standardının gelişimine önemli katkısı bulunan, standart C++ kütüphanelerindeki işlevsel ya da başarım ile ilgili eksikleri gideren yüzlerce kütüphaneden oluşur. Bu kütüphanelerin listesine ve bilgisine bu bağlantıdan ulaşabilirsiniz. Bu kütüphaneler aynı zamanda C++11 ile gelen yeni kütüphaneler için en iyi uygulamaları barındıran referans çözüm olma özelliğini de taşıyor. Zamanla, bu kütüphaneler, C++'ın yeni versiyonlarında (C++11, C++14 ve C++17) standarda taşınıyorlar. Ancak hala önemli bazı Boost kütüphaneleri (Boost.Asio gibi) standardın dışında kullanım için bekliyor. 
Boost kütüphanelerini Solaris, Linux, AIX ve Windows gibi farklı platformlarda kullanabilirsiniz. Bunun için bu platformlarda ya hazır paket olarak kurulum yapmanız gerekir ya da kaynak koddan derlemeniz gerekir. Bu yazıda Boost kütüphanesinin Windows işletim sisteminde Visual Studio 2015 ile birlikte kullanabilmek üzere kaynak koddan derlenmesi için gerekli adımlar tanıtılacaktır. İlk adım olarak Boost kütüphanesinin bu yazı yazıldığında en güncel sürümü olan 1.63 sürümünü bu bağlantıdan indirmekle başlıyoruz. Ardından sıkıştırılmış dosyayı bir dizine açıyoruz. Makinamda bu dizini e:\opt\boost_1_63_0 olarak belirledim. e:\opt dizinine aşağıdaki BAT dosyasını oluşturuyoruz:


call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
 
cd boost_1_63_0
call bootstrap.bat
 
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64
b2 -j8 toolset=msvc-14.0 address-model=32 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/win32
 

vcvarsall.bat dosyası Visual Studio 2015 kurulumu ile gelen ve çevre değişkenlerini Visual Studio araçlarını kullanabilmeniz için ayarlayan bir betik. Makinamdaki Visual Studio 2015 kurulumunda, vcvarsall.bat dosyası, c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC dizininde oluşturulmuş. Siz de kendi maninanızdaki yerini bulup, yukarıdaki betikte uygun değişikliği yapmanız gerekir. vcvarsall.bat betiğine hangi mimaride derleme yapmak istiyorsak ilgili parametreyi vermemiz gerekir: 32-bitlik bir derleme için x86 ve 64-bitlik bir derleme için x64. Yukarıdaki betikten 64-bitlik derleme yapacağımızı görebilirsiniz. Şimdi betiği çalıştıralım:

e:\opt>call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 
Building Boost.Build engine

Bootstrapping is done. To build, run:

    .\b2
    
To adjust configuration, edit 'project-config.jam'.
Further information:

    - Command line help:
    .\b2 --help
     
    - Getting started guide: 
    http://boost.org/more/getting_started/windows.html
     
    - Boost.Build documentation:
    http://www.boost.org/build/doc/html/index.html
Performing configuration checks

    - 32-bit                   : yes
    - arm                      : no
    - mips1                    : no
    - power                    : no
    - sparc                    : no
    - x86                      : yes
    - symlinks supported       : no
    - junctions supported      : yes
    - hardlinks supported      : yes
    - C++11 mutex              : yes
    - Boost.Config Feature Check: cxx11_auto_declarations : yes
    - Boost.Config Feature Check: cxx11_constexpr : yes
    - Boost.Config Feature Check: cxx11_defaulted_functions : no
    - Boost.Config Feature Check: cxx11_final : yes
    - Boost.Config Feature Check: cxx11_hdr_mutex : yes
    - Boost.Config Feature Check: cxx11_hdr_tuple : yes
    - Boost.Config Feature Check: cxx11_lambdas : yes
    - Boost.Config Feature Check: cxx11_noexcept : yes
    - Boost.Config Feature Check: cxx11_nullptr : yes
    - Boost.Config Feature Check: cxx11_rvalue_references : yes
    - Boost.Config Feature Check: cxx11_template_aliases : yes
    - Boost.Config Feature Check: cxx11_thread_local : yes
    - Boost.Config Feature Check: cxx11_variadic_templates : yes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\instantiate_predef_macros.obj
instantiate_predef_macros.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\instantiate_cpp_exprgrammar.obj
instantiate_cpp_exprgrammar.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\wave_config_constant.obj
wave_config_constant.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\instantiate_cpp_literalgrs.obj
instantiate_cpp_literalgrs.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\instantiate_re2c_lexer_str.obj
instantiate_re2c_lexer_str.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\cpplexer\re2clex\aq.obj
aq.cpp
compile-c-c++ bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\cpplexer\re2clex\cpp_re.obj
cpp_re.cpp
msvc.archive bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\libboost_wave-vc140-mt-gd-1_63.lib
common.copy stage\win32\lib\libboost_wave-vc140-mt-gd-1_63.lib
bin.v2\libs\wave\build\msvc-14.0\debug\link-static\threading-multi\libboost_wave-vc140-mt-gd-1_63.lib
        1 file(s) copied.
...updated 1015 targets...

Makinanızın disk, işlemci ve bellek başarımına göre derleme işlemi 3 dakika ile 15 dakika arası bir süre alabilir. Derleme tamamlandıktan sonra aşağıdaki adımları izleyerek VS 2015'de bir C++ çözümü ve projesi yaratıyoruz:


Evet, makinamda Visual Studio Community 2015 kurulu.

Visual Studio 2015'in açılış sonrası görünümü.

Şimdi, bir proje yaratabiliriz.

Projenin türü olarak Win32 Console Application seçiyoruz. 

Projenin bazı özelliklerini seçmek üzere bizi bir diyalog karşılıyor.



Precompiled header seçimini kaldıralım, diğer varsayılan değerlere dokunmuyoruz!

main giriş fonksiyonu olan boş bir proje yaratıldı.
Projede 64-bitlik çalışmak için x64 mimarisini seçiyoruz. 
Projenin Boost kütüphanesini görebilmesi için bir kaç tanımlama yapmak üzere, Projenin özellikleri diyalog penceresini açıyoruz.

C/C++ altındaki General başlığını seçiyoruz. Sağ taraftaki Additional Include Directories değeri olarak "e:\opt\boost_1_63_0" dizinini giriyoruz.

C/C++ altındaki "Precompiled Headers" başlığını seçiyoruz. Sağ taraftaki Precompiled Header değeri olarak Not Using Precompiled Headers değerini seçiyoruz.

Linker altındaki General başlığını seçiyoruz. Sağ taraftaki ayarlarda "Additional Library Directories" değeri olarak "e:\opt\boost_1_63_0\stage\x64\lib" dizinini giriyoruz.

Artık projeyi derleyebiliriz.

Derleme işlemimiz başarılı oldu.
Örnek projeyi bu bağlantıdan indirebilirsiniz. 

No comments:

Post a Comment