Dlibのcompile.xml の和訳を作成しました。
おすすめの使い方としては、xmlファイルとしてダウンロードしてXMLファイルをビュワー(ブラウザも可)で読んでみることです。
compile.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<doc>
<!-- ************************************************************************* -->
<body>
<center><h1>Using dlib from Python</h1></center>
<p>
dlibリポジトリのベースフォルダに行き、<tt> python setup.py install </tt>を実行してください。
そのコマンドの実行が終了したら、Pythonのdlibを使用する準備が整いました。
これを機能させるには、CMakeと動作するC ++コンパイラをインストールする必要があります。
</p>
<p>
また、GUIサポート(dlib.image_windowなど)やCUDAアクセラレーションなどのさまざまなオプション機能は、あなたのコンピュータで利用可能な機能に基づいて有効または無効になります。
installコマンドを実行すると、何を使用しているのかを示すメッセージが表示されます。
それらのメッセージを読み、結果が気に入らない場合は適切な処置を取ってください。
たとえば、LinuxおよびOSXユーザーは、GUIツールを使用するためにlibX11をインストールする必要があります。
これを気にかけているのであれば、メッセージを読んでください。
メッセージには、これらのオプション機能をインストールする方法を教えてくれます。
</p>
<p>
あるいは、dlibのpythonインターフェースにさらにpythonバインディングを追加したい場合は、たぶんsetup.pyファイルを使わずにCMakeを使って直接作業したいでしょう。 特に、dlibのpython APIはCMakeプロジェクトによってtools / pythonフォルダーにビルドされます。 このプロジェクトを通常のCMakeコマンドを使ってビルドしコンパイルすると、dlib用のpython APIを定義するdlib共有ライブラリを出力します。
</p>
<br/>
<hr/>
<br/>
<center><h1>Using dlib from C++</h1></center>
dlibを使うプログラムをコンパイルする最良の方法は<a href="http://www.cmake.org"> CMake </a>を使うことです。 たとえば、次のコマンドは、どのオペレーティングシステムでもサンプルプログラムをコンパイルします。
<code_box>
cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release
</code_box>
あなたのシステムにC ++ 11コンパイラもインストールする必要があります。 ほとんどのオペレーティングシステム用の無料のC ++ 11コンパイラがあります。 たとえば、WindowsではVisual Studioは無料で利用できます、Mac OS XおよびLinuxシステムではGCCは無料でうまく機能します。 複数のコンパイラ/ IDEがインストールされている場合は、-Gオプションを使用してCMakeに使用したいコンパイラを指定できます。
<p>
<a href="examples/CMakeLists.txt.html"> examples / CMakeLists.txt </a>ファイルは、CMakeにサンプルの作成方法を指示します。あなた自身のプロジェクトを作成するには、 このファイルから始めてそれを編集すればよいのです。 cmake-guiまたはccmakeツールを使用して、cmakeプロジェクトの追加設定を実行することもできます。 たとえば、dlibの顔検出器を使用している場合は、SSE4またはAVXのいずれかの命令をオンにする必要があります。これにより、実行速度が大幅に向上します(<a href="faq.html#Whyisdlibslow">this FAQ </a>も参照)。
</p>
<p>
最後に言い添えることは、Visual Studioを使用している場合、CMakeはデフォルトで32ビットの実行ファイルを生成しますということです。 つまり、コンパイルしたそのプログラムは2GBのRAMしか使用できません。 これを避けるためには、64ビットの実行ファイルを生成するようにCMakeに指示する必要があります。 <code_box> cmake .. </code_box>の代わりに<code_box> cmake -G "Visual Studio 14 2015 Win64" -T host = x64 .. </code_box>のようなコマンドを使用して行います。 オプションなしで<tt> cmake </tt>を実行することで<tt> -G </tt>への有効な引数。 <tt> -T host = x64 </tt>オプションにも注意してください。これはVisual Studioに2GB以上のRAMを使用させるようにコンパイラーに指示します。 状況によっては、RAMの不足からコンパイラがクラッシュしたくない場合は、これが重要です。
</p>
<br/>
<h2>Compiling C++ Examples Without CMake</h2>
<p>
ほとんどの場合、このライブラリを使用するには、ライブラリをどこかに展開し、dlibフォルダ<i>を含む</i>フォルダがインクルードパスに含まれていることを確認し、最後に あなたのプロジェクトにdlib / all / source.cppを追加します。
</p>
<p>
繰り返しますが、コンパイラのインクルードパスにdlibフォルダ自体を追加しないでください。 そうすると、名前の衝突のためにビルドが失敗します(例えば、dlib / string.hと標準ライブラリのstring.h)。 代わりに、dlibフォルダーを含むフォルダーをインクルード検索パスに追加してから、 <tt>#include <dlib/queue.h></tt>の形式のインクルードステートメントを使用してください。 これにより、すべてが正しくビルドされます。
</p>
<p>
また、dlibを使用してjpeg / png / gifファイルを操作したい場合は、プログラムをlibjpeg、libpng、および/またはlibgifとリンクする必要があります。 DLIB_JPEG_SUPPORT、DLIB_PNG_SUPPORT、およびDLIB_GIF_SUPPORTプリプロセッサディレクティブを定義して、これについてdlibに指示する必要もあります。 libjpeg / libpng / libgifへのリンク方法はプラットフォームによって異なります。 UNIXマシンでは、通常、(ライブラリをインストールした後で)コンパイラに-ljpeg、-lpng、または-lgifスイッチを追加するだけです。 Windowsではそれほど明確ではありません。 そのため、dlibのdlib / externalフォルダにlibjpegとlibpngのコピーが付属しているので、システム全体のバージョンがマシン上で使用できない場合は、それらをアプリケーションに静的にコンパイルできます。 リンクに関するこの話がすべて混乱を招く場合は、CMakeを使用してください。 CMakeはあなたのためにこれをすべて設定します。
</p>
<p>
Dlibは、あなたのシステムにインストールされている最適化されたBLASまたはLAPACKライブラリを使うこともできます。 これらのライブラリにリンクすると、多くのことが速くなります。 これを行うには、DLIB_USE_BLASおよび/またはDLIB_USE_LAPACKプリプロセッサディレクティブを定義してから、プログラムを自分が持っているBLASまたはLAPACKライブラリとリンクします。 CMakeを使うなら、これは自動的に設定されます。
</p>
<h3>Compiling on Linux From Command Line</h3>
examplesフォルダ内から、次のように単一のコマンドでほぼすべての例をコンパイルできます。
<code_box>
g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 example_program_name.cpp
</code_box>
SolarisのようなLinux以外のシステムでは、他のライブラリにリンクする必要があるかもしれません。 たとえば、-lnslまたは-lsocketオプションをg ++に指定する必要があるシステムを見ました。 さらに、X11開発ライブラリはデフォルトではUbuntuにインストールされていません。 あなたがX11開発ライブラリを必要とし、Ubuntuを使用しているのであれば、あなたはそれを次のようにタイプすることによってそれをインストールすることができます:
<code_box>
sudo apt-get install libx11-dev
</code_box>
<h3>Compiling on Windows Using GCC</h3>
<p>
Windows上のgccのコマンドは上記と同じですが、(-lオプションを使用して)次のライブラリ、gdi32、comctl32、user32、winmm、ws2_32、またはimm32にリンクする必要があるかもしれません:
</p>
<h3>Compiling on Windows Using Visual Studio 2015 or Newer</h3>
<p>
必要なことは空のコンソールプロジェクトを作成するだけです。 それからプロジェクトにdlib / all / source.cppを追加し、#include search path にdlibフォルダーを含むフォルダーを追加します。 それからはどんなサンプルプログラムでもあなたのプロジェクトに追加してコンパイルできます。
</p>
<p>
繰り返しますが、libjpegとlibpngにリンクした場合にしか、dlibはjpegファイルとpngファイルを扱いません。 Visual Studioでこれを行う最も簡単な方法は、dlib / externalフォルダーにあるすべてのlibjpeg、libpng、およびzlibソースファイルをプロジェクトに追加し、さらにDLIB_PNG_SUPPORTおよびDLIB_JPEG_SUPPORTプリプロセッサーディレクティブを定義することです。 Visual Studioの設定方法がわからない場合は、上記のようにCMakeを使用してください。すべての処理が自動的に行われるためです。
</p>
<br/>
<h2>Installing dlib as a precompiled library</h2>
<p>
Dlibのcmakeスクリプトには標準のインストールターゲットが含まれています。 他のC ++ライブラリと同じように、CMakeを使用してdlibシステム全体をプリコンパイルされたスタティックライブラリまたは共有ライブラリとしてインストールできます。 ただし、ほとんどのユーザーはこのページの上部に記載されているように(特に<a href="examples/CMakeLists.txt.html">サンプルプロジェクト</a>に示すように)CMakeを使用する必要があります。 特に、いつでも好きなときにdlibのデバッグモードのオン/オフを切り替えることができます。これはdlibのデバッグモードがその最も強力な機能の1つであるため、本当に使うべきものです。
</p>
<p>
We should also make a special note of the problems associated with
documentation and <a href="http://siomsystems.com/mixing-visual-studio-versions/">this excellent overview</a> in particular.
また、Visual StudioでプリコンパイルされたC ++ライブラリを使用するときには関連する問題について特別な注意を払う必要があります。 <b> 長すぎて読まなくていいことだけど、Visual Studioがプリコンパイル済みライブラリ(つまり.libファイル)をどう利用しているのかを十分知っているのでなければ、Visual Studioではプリコンパイル済みライブラリを使用しないことです。</b>これはdlibの制限ではありません。 dlibとは関係ありません。 まさにVisual Studioのしくみです。 それについて私に尋ねないでください。 これを理解したい場合は、Visual Studioのドキュメントと、特に<a href="http://siomsystems.com/mixing-visual-studio-versions/">this excellent overview</a>をお読みください。
</p>
<p>
しかし、忙しい人のために、ここではVisual Studioの問題を要約します。 問題は、Visual Studioには互換性のないランタイムが複数あり、1つのアプリケーションに異なるランタイムでコンパイルされたオブジェクトコードを混在させることは違法だということです。 たとえば、Visual Studioの "Release"モードでC ++ライブラリをコンパイルした場合、Visual Studioの "Debug"モードでコンパイルされたアプリケーションで使用することは違法です。
<p>
</p>
Visual Studioの各バージョンには独自のランタイムセットがあり、各バージョンのVisual Studioごとに少なくとも8つの異なるランタイムがあり、それらのすべてに互換性がないため、これは特に悪くなります。 ほとんどのVisual Studioユーザーはこれを完全には認識していないようですが、私に連絡を取った多くの人は、「ランタイム」や「オブジェクトコード」という言葉が何を表しているのかさえ理解できません。 そのため、アプリケーション内のすべてのオブジェクトコード(およびプリコンパイル済みライブラリ)が同じランタイムを使用するようにすることは、プリコンパイル済みライブラリを使用するときには非常に困難になります。 しかし、このページの冒頭で説明したようにCMakeを使うだけで問題を生じません。これがCMakeがお勧めする理由の1つです。
</p>
<p>
要約すると、上の段落が何について話しているのか理解できないのであれば、Visual Studioでdlibをプリコンパイル済みライブラリとしてインストールするべきではありません。 代わりに、このページのトップに行き、そこで説明を読んでください。 それらの指示に従ってください、それは超簡単です。
</p>
<br/>
<center><h1>Miscellaneous Preprocessor Directives</h1></center>
<p>
上記のプリプロセッサディレクティブに加えて、ビルドプロセス中に、ライブラリをさまざまなオプションの方法でビルドさせるために指定できるものがいくつかあります。 デフォルトでは、ライブラリは常に妥当なことをしますが、有用なプリプロセッサディレクティブを以下にリストします。
</p>
<anchor>ENABLE_ASSERTS</anchor>
<h3>#define ENABLE_ASSERTS</h3>
<p>
このディレクティブを定義すると、すべての<a href="metaprogramming.html#DLIB_ASSERT"> DLIB_ASSERT </a>マクロがアクティブになります。 Visual StudioまたはCMakeを使用している場合は、デバッグモードでコンパイルするとENABLE_ASSERTSが自動的に有効になります。 ただし、別のビルドシステムを使用している場合は、アサートを有効にしたい場合は手動で有効にする必要があるかもしれません。
</p>
<anchor>DLIB_ISO_CPP_ONLY</anchor>
<h3>#define DLIB_ISO_CPP_ONLY</h3>
<p>
これは、ライブラリがISO C ++以外のすべてのコードを除外するように設定できる#defineディレクティブです(<a href="api.html"> API wrappers </a>セクションの内容と、それらのラッパーに依存するオブジェクト)。 これは、ライブラリで完全にはサポートされていないシステム上で構築しようとしている場合、または自分自身の理由でそのようなものをプログラムにコンパイルしたくないと判断した場合に便利です。
</p>
<anchor>DLIB_NO_GUI_SUPPORT</anchor>
<h3>#define DLIB_NO_GUI_SUPPORT</h3>
<p>
これはDLIB_ISO_CPP_ONLYオプションと同様ですが、ライブラリーのGUI部分のみが除外される点が異なります。 あなたがこれを使いたいと思うかもしれない場合の例はあなたがGUIサポートを必要とせず、あなたがX11ヘッダがインストールされていないUNIXプラットフォーム上で構築している場合でしょう。
</p>
<anchor>DLIB_THREAD_POOL_TIMEOUT</anchor>
<h3>#define DLIB_THREAD_POOL_TIMEOUT <time-in-milliseconds></h3>
<p>
dlibを使ってスレッドを作成すると、dlib動的スレッドプールの利点が得られます(dlib :: <a href="api.html#thread_pool"> thread_pool </a>オブジェクトは、これとは無関係のものです)。 2つを混同しないでください。 このプールは、プールが空でないときにスレッドをスレッドプールから引き出すため、dlibが新しいスレッドを非常に迅速に生成することを可能にします。
</p>
<p>
したがって、dlibによって作成されたスレッドが終了すると、それは実際にはdlibスレッドプールに戻り、DLIB_THREAD_POOL_TIMEOUTミリ秒待機してからリソースを完全に終了してオペレーティングシステムに解放します。 このライブラリで使用されるデフォルトのタイムアウトは30,000ミリ秒(30秒)です。 ただし、DLIB_THREAD_POOL_TIMEOUTを新しい値に定義することで、これを好きなように変更できます。
</p>
</body>
<!-- ************************************************************************* -->
</doc>