最終更新:2013年06月10日 (月) 22時46分23秒
目次
・
OpenCVビルド用のビルド
・普通にpythonをビルド
・プロジェクトビルドの失敗を個々に解決する
・依存ファイルに最新バージョンのものを使う
Note:
・オプションのプロジェクトをビルドした際に必要だった依存ファイルは,ビルド後必要ないのだろうか.
■OpenCVビルド用のビルド
-OpenCVビルドを考えている人へのまえがき
OpenCVのDebug版ビルド時にpython27_d.dllがないとエラーが出ます.また,配布されているビルド済みのものは32bitのものだけです.これらを得るためにはpythonをビルドするひつようがあります.
※ といっても,pythonでは普通デバッグ版,64bit版を使わないようです.OpenCvを32bit・Releaseでビルドする際には,配布されているpython27.dllがあればよく,python27_d.dllがないことで設定時等でエラー/メッセージが出るかもしれませんが,無視してよさそうです.
→ 参考:
http://dsas.blog.klab.org/archives/51344779.html
-OpenCVビルド用に 32bit python27_d.dllをビルド
pythonのビルド自体は,ソース展開後PCbuildフォルダ内のpcbuild.slnから行えます.
それをmsvcで開き,プロジェクト"python"をビルドすると,PCbuildフォルダにpython27_d.dllができます.
できたpython27_d.dllはインストーラ版のフォルダ/libsにコピーすればよいです.
■普通にpythonをビルド
-ソリューションのビルド
pythonのビルドは,ソースファイルをダウンロードし,その中のPCbuild/pcbuild.slnから行えます.
VisualStudioのExpress版ではこのファイルを開く際にメッセージが出て,ソリューションエクスプローラに利用できないものが見られますがビルドに支障はありません.
msvcのどのバージョンで開くかというのは.slnファイルをメモ帳などで開き,冒頭2行を見て確認します.
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
ソリューションをビルドすると依存関係などの理由からいくつか失敗すると思います.といっても,プロジェクトpython以外はオプションらしいので,必要に応じてビルドすればよさそうです(PCBuildのreadmeより記憶半分ですが).
-ビルドの失敗
プロジェクトがいくつか失敗する原因は,依存関係などの理由からいくつかの失敗すると思います.
私は7つでした.いくつかエラーを抜粋しました.どれもファイルのパスが原因のようです.
このうちのいくつかは依存関係によるもので,必要なファイルをダウンロードすることにより解決します.
2>c1 : fatal error C1083: ソース ファイルを開けません。'..\..\sqlite-3.6.21\sqlite3.c': No such file or directory
4>IOError: [Errno 2] No such file or directory: 'crypto\\buildinf_x86.h'
6>IOError: [Errno 2] No such file or directory: 'crypto\\buildinf_x86.h'
3>..\Modules\_tkinter.c(66) : fatal error C1083: include ファイルを開けません。'tcl.h': No such file or directory
5>c:\tools\python\python-2.7.5\modules\_sqlite\connection.h(33) : fatal error C1083: include ファイルを開けません。'sqlite3.h': No such file or directory
-依存ファイルのダウンロード
バッチファイルの実行は,適切なフォルダ(PCbuild,Toolsのあるフォルダ)で行う必要があります.
これにより,適切な位置(PCbuild,Toolsのあるフォルダのひとつ上)に依存ファイルがダウンロードされます.
cd Python-2.7.5
Tools\buildbot\external-common.bat
これで失敗が2つに減りました.
ここからは,個々に解決していきます.
人によって,出るエラーが異なるかも知れません.
■プロジェクトビルドの失敗を個々に解決する
-_hashlib 1つめ
プロジェクト_hashlibで次のようなエラーが出ました.
opensslのビルドでつまずいているようです.
3>------ ビルド開始: プロジェクト: _hashlib, 構成: Debug Win32 ------
3>ビルド前のイベントを実行しています...
2>Can not find a suitable PERL:
2> the following perl interpreters were found:
2> C:\Perl\bin\perl.exe
2> c:\perl\bin\perl.exe
2> C:\perl\bin\perl.exe
2> None of these versions appear suitable for building OpenSSL
2> Please install ActivePerl and ensure it appears on your path
2>No Perl installation was found. Existing Makefiles are used.
fh = os.popen('"%s" -e "use Win32;"' % perl)
fh = os.popen(perl + ' -e "use Win32;"')
-_hashlib 2つめ
2つ目のエラーです.
3>'nasm' は、内部コマンドまたは外部コマンド、
3>操作可能なプログラムまたはバッチ ファイルとして認識されていません。
これで,_hashlib のビルドは通ります.
残す一つのビルドもopensslによるものだったので,全てのプロジェクトのビルドが成功しました.
全て通ると気持ちいいものですね.
■依存ファイルに最新バージョンのものを使う
新しいバージョンの依存ファイルを用意しそこへパスを変更すれば,ビルドはおおむね通ると思います.
パスの設定は 例えばプロジェクト_sslであれば,次の場所から変更できます.
プロパティマネージャ > _ssl > Debug|Win32(必要に応じて違うものを) > pyd_d > pyproject
> ユーザーマクロ > opensslDir
※ プロパティマネージャは[表示(V)]から表示可能にしておき,ソリューションエクスプローラの場所のタブを変えることで表示できます.
-OpenSSL-1.0.1e
ソースファイルをダウンロード,ビルドしたものをopenssl-0.9.8yがあるフォルダに入れます.
→ openssl-1.0.1e.tar.gz:
http://www.openssl.org/source/
※ tar.gzをlhaplusで解凍するには,デスクトップのショートカットにD&Dします(右クリックでは×).
openssl-1.0.1eフォルダの中のout32dllをout32にリネームします.
opensslDirで設定されているパスを以下のように変えます.
$(externalsDir)\openssl-1.0.1e
ソリューションをビルドします.
最終更新:2013年06月10日 22:46