28 Temmuz 2017 Cuma

chrono

duration Sınıfı
duration birime duration_cast ile çevrilir. Şöyle yaparız.
const auto duration = ...;
auto duration_msec = duration_cast<milliseconds>(duration);
milliseconds Sınıfı
Şu satırı dahil ederiz.
#include <boost/chrono.hpp>
Şu kütüphane ile linkleriz.
-lboost_chrono
Constructor
Şöyle yaparız.
auto  s = boost::chrono::milliseconds (10000);
process_cpu_clock Sınıfı
Duvar saatini vermez. Process'in ne kadar zaman kullandığını belirtir.

Constructor
Şöyle yaparız.
chrono::process_cpu_clock mytimer;
now metodu
Şöyle yaparız.
const auto start = mytimer.now();
operator - metodu
Şöyle yaparız.
const auto start = mytimer.now();
// do work
const auto duration = mytimer.now() - start;
thread_clock Sınıfı
Giriş
Şu satırı dahil ederiz.
#include <boost/chrono/thread_clock.hpp>
Duvar saatini vermez. Thread'in ne kadar zaman kullandığını belirtir.
now metodu
Şöyle yaparız.
boost::chrono::thread_clock::time_point p1 = boost::chrono::thread_clock::now();
operator - metodu
Şöyle yaparız.
boost::chrono::thread_clock::time_point p1 = boost::chrono::thread_clock::now();
...
boost::chrono::thread_clock::time_point p2 = boost::chrono::thread_clock::now();
std::cout << "duration = " 
  << boost::chrono::duration_cast<boost::chrono::microseconds>(p2-p1).count()
  << " microsec\n";

thread this_thread Sınıfı

Giriş
Şu satırı dahil ederiz.
#include "boost/thread.hpp"
Şu satırı da dahil edebiliriz.
#include <boost/thread/thread.hpp>
interuption_point metodu
Şöyle yaparız.
boost::this_thread::interruption_point();
sleep metodu - posix_time
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time.hpp>
Bu metod chrono süreleri yerine posix_time ile çalışmak üzere tasarlanmış.

Şöyle yaparız.
boost::this_thread::sleep (boost::posix_time::seconds(5));
Şöyle yaparız.
boost::this_thread::sleep (boost::posix_time::milliseconds(10));
sleep_for metodu - chrono
Bu metod posix_time yerine chrono süreleri ile çalışmak üzere tasarlanmış.

Şöyle yaparız.
boost::this_thread::sleep_for (boost::chrono::seconds(60));
Şöyle yaparız.
int seconds = ...;
boost::this_thread::sleep_for (boost::chrono::seconds{seconds});
Şöyle yaparız.
boost::this_thread::sleep_for (boost::chrono::milliseconds(500));

b2 komutu

Giriş
Bu komut bir şekilde boost-build.jam dosyasındaki ayarları kullanıyor.
a seçeneği
Şöyle yaparız.
./b2 -a macosx-version-min=10.7 install 
address-model seçeneği
Şöyle yaparız.
b2 address-model=32 --build-type=minimal stage --stagedir stage
b2 address-model=64 --build-type=minimal stage --stagedir stage64
architecture seçeneği
Şöyle yaparız.
b2 toolset=msvc-14.0 address-model=64 architecture=x86 link=static
  threading=multi runtime-link=shared --build-type=minimal stage
  --stagedir=stage/x64
buildtype seçeneği
complete,minimal gibi seçenekler alabilir.
Örnek - complete
Şöyle yaparız.
b2 --toolset=msvc-14.0 --build-type=complete architecture=x86 address-model=64
  stage 
Örnek - minimal
Şöyle yaparız.
b2 toolset=msvc-14.0 address-model=64 architecture=x86 link=static
  threading=multi runtime-link=shared --build-type=minimal stage
  --stagedir=stage/x64
Örnek - minimal
Şöyle yaparız.
b2 -j8 toolset=msvc-15.0 address-model=64 architecture=x86 link=shared
threading=multi runtime-link=shared --with-thread --build-type=minimal stage
cxxflags seçeneği
Şöyle yaparız.
b2 toolset=gcc cxxflags="-std=c++11" $* > build.log
headers seçeneği
Modular boost kuruyorsak şöyle yaparız.
./bootstrap.sh
./b2 headers
install seçeneği
--prefix ile kurulumun yapılmasını istediğimiz dizini belirtiriz. Şöyle yaparız.
b2 toolset=gcc install --prefix=/home/user/boost
Şöyle yaparız.
b2 -j8 toolset=msvc-14.0 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=C:\Boost\x64 install
-j seçeneği
Şöyle yaparız.
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
Şöyle yaparız.
./b2 -j5 link=static
layout seçeneği
Açıklaması şöyle, versioned, tagged, system seçenekleri var.
#   --layout=<layout>       Determines whether to choose library names
#                           and header locations such that multiple
#                           versions of Boost or multiple compilers can
#                           be used on the same system.
#
#                               versioned - Names of boost binaries
#                               include the Boost version number, name and
#                               version of the compiler and encoded build
#                               properties.  Boost headers are installed in a
#                               subdirectory of <HDRDIR> whose name contains
#                               the Boost version number.
#
#                               tagged -- Names of boost binaries include the
#                               encoded build properties such as variant and
#                               threading, but do not including compiler name
#                               and version, or Boost version. This option is
#                               useful if you build several variants of Boost,
#                               using the same compiler.
#
#                               system - Binaries names do not include the
#                               Boost version number or the name and version
#                               number of the compiler.  Boost headers are
#                               installed directly into <HDRDIR>.  This option
#                               is intended for system integrators who are
#                               building distribution packages.
#
#                           The default value is 'versioned' on Windows, and
#                           'system' on Unix.
tagged
Çıktının -mt.so olmasını sağlar.
Örnek
Şöyle yaparız.
./b2 --layout=tagged --with-timer variant=release link=static
Çıktı kütüphanelerinin şöyle olmasını sağlar.
libboost_chrono-mt.lib
Örnek
Şöyle yaparız.
./b2 --without-mpi --without-python --without-iostreams
--layout=tagged threading=multi link=shared runtime-link=shared
link=static install
Çıktı olarak şunu alırız
libboost_regex.a
libboost_regex-mt.a
libboost_regex-mt.so@
libboost_regex-mt.so.1.63.0*
libboost_regex.so@
libboost_regex.so.1.63.0*
system
Çıktı kütüphanesinin şöyle olmasını sağlar.
libboost_log.dll
versioned
Şöyle yaparız.
b2 --build-dir=build toolset=msvc-12.0 address-model=64 threading=single
link=shared,static variant=debug,release -j 12 --layout=versioned --stagedir=msvc
Çıktı kütüphanelerin şöyle olmasını sağlar. Dosya ismine vc120 gibi ekler.
boost_date_time-vc120-mt-gd-1_62.dll
ABI seçeneklerinin açıklaması şöyle
s – linking statically to the C++ standard library and compiler runtime support libraries.
g – using debug versions of the standard and runtime support libraries.
y – using a special debug build of Python.
d – building a debug version of your code.
p – using the STLPort standard library rather than the default one supplied with your compiler.
Şu dosyadaki gd debug version anlamına gelir.
libboost_chrono-vc140-mt-gd-1_62.lib
Release kodunda şu dosyayı kullanırız.
libboost_chrono-vc140-mt-1_62.lib
link seçeneği
static,shared seçenekleri kullanılabilir.
Sadece static (.a) uzantısına sahip kütüphaneler için şöyle yaparız.
b2 toolset=msvc-14.0 link=static --build-type=complete architecture=x86 -j8
Dinamik (.so) ve static (.a) uzantısına sahip kütüphaneler için şöyle yaparız.
b2 link=static,shared <other_flags>
reconfigure seçeneği
Eğer bzip2 gibi bir kütüphane sonradan kurulduysa şöyle yaparız.
b2 --reconfigure
runtime-link seçeneği
Şöyle yaparız.
b2 toolset=msvc-14.0 address-model=64 architecture=x86 link=static
  threading=multi runtime-link=shared --build-type=minimal stage
  --stagedir=stage/x64
--show-libraries
Şöyle yaparız.
./b2 --show-libraries
  - atomic
  - chrono
  - container
  - context
  - coroutine
  - coroutine2
  - date_time
  - exception
  - fiber
  - filesystem
  - graph
  - graph_parallel
  - iostreams
  - locale
  - log
  - math
  - metaparse
  - mpi
  - program_options
  - python
  - random
  - regex
  - serialization
  - signals
  - system
  - test
  - thread
  - timer
  - type_erasure
  - wave
stage
Şöyle yaparız
--stagedir=stage\x64-static-python35 stage
stagedir seçeneği
Şöyle yaparız.
b2 toolset=msvc-14.0 address-model=64 architecture=x86 link=static
  threading=multi runtime-link=shared --build-type=minimal stage
  --stagedir=stage/x64
threading seçeneği
single,multi seçenekleri kullanılabilir.

Şöyle yaparız.
b2 toolset=msvc-14.0 address-model=64 architecture=x86 link=static
  threading=multi runtime-link=shared --build-type=minimal stage
  --stagedir=stage/x64
Şöyle yaparız.
b2 link=static,shared threading=single,multi
toolset seçeneği
clang,gcc,gcc-arm, msvc-14.0 gibi seçenekler kullanılabilir.

Şöyle yaparız.
b2 toolset=gcc-arm target-os=linux link=static runtime-link=dynamic
threading=multi --build-type=complete --build-dir=boost-build --stage-dir=stage
--debug-configuration --debug-building --debug-generator
Şöyle yaparız.
b2 --build-type=minimal --layout=system toolset=clang variant=release
link=shared threading=multi runtime-link=shared stage
Şöyle yaparız.
b2 --toolset=gcc-4.9 stage
Şöyle yaparız.
b2 toolset=gcc cxxflags=-std=c++1y -a
Şöyle yaparız.
b2 --toolset=msvc-14.0 
variant seçeneği
Sadece release için şöyle yaparız.
b2.exe ... variant=release
Debug ve releasse için şöyle yaparız.
b2 -j8 --build-dir=build               toolset=msvc-14.0 variant=debug,release
link=shared threading=multi runtime-link=shared                  stage
b2 -j8 --build-dir=build --buildid=x64 toolset=msvc-14.0 variant=debug,release
link=shared threading=multi runtime-link=shared address-model=64 stage
--with-<library> seçeneği
 Sadece belli kütüphaneleri derlemek için -with-<library> komutu çalıştırılır.
Örnek
exception kütüphanesini derlemek için şöyle yaparız.
b2 link=shared runtime-link=shared --with-exception
Örnek
filesystem icin --with-filesystem yaparız

Örnek
iostreams kütüphanesini derlemek için şöyle yaparız
b2 --with-iostreams
Örnek
Bzip ve Zlib kütüphanelerini belirtmek için şöyle yaparız.
b2 --with-iostreams -s BZIP2_SOURCE=/opt/bzip2 -s ZLIB_SOURCE=/opt/zlib

Örnek
python kütüphanesi için şöyle yaparız.
b2 --with-python python-debugging=off threading=multi variant=debug
Şöyle yaparız.
.\b2 --prefix=c:\boost --build-dir=boost_build --layout=versioned
  toolset=msvc-14.1 address-model=64 -j4 --with-python -a --reconfigure
  --stage-dir=stage --build-type=complete --debug-configuration -d2 stage
>build.log 2>&1
Örnek
system için şöyle yaparız.
./b2 install --with-system --with-python
Örnek
timer için şöyle yaparız.
./b2 --with-timer variant=release link=static
Örnek
thread kütüphanesi için şöyle yaparız.
b2.exe --with-thread --build-type=complete toolset=msvc-12.0 architecture=x86
 address -model=64 stage
--without-<library> seçeneği
Şöyle yaparız.
--without-python