OpenCVのビルド(CUI編)
OpenCVのビルドってめんどくさいよね
2016年3月の記事で「OpenCV3.1.0のビルド方法(GUI編)」というのを掲載しました。この方法はOpenCVをビルドするオーソドックスな方法です。
ただ、CMakeGUIを使用してオプションを設定し何度も [Configure] をしないとプロジェクトが作れないという煩わしさがあり、そのためにPCに張り付いて画面でポチポチしないといけません。特に微妙に設定を変えて同じバージョンのビルドを作ろうとするとその煩わしさは半端ありません。昔は夜なべしてポチポチやっていたこともあります。でも、なんだかビルド作業にばかり時間がかかり、そこで疲弊して気がついたらOpenCVのテストはもういいやってなったこともしばしばです。
めんどくさいことは自動化できないか
で、なんとかコマンドプロンプトでバッチファイル組んで自動化できないかって思ってしまう訳なんですよ。これはマジOpenCVのVer1のころから思っていました。まあ、その頃は画像処理のコードは自分でゴリゴリ書いていた(今でも書いているけど)のでOpenCVは時間があったら試してみようぐらいのつもりだったのでコマンドラインでのCMakeの使い方調べてバッチファイル書くまでのモチベーションがなかったです。
ちょうど上記の記事を書く前に機械学習や深層学習を真面目に取り組まないとまずいなということになって、OpenCV3をいじりはじめて再びビルドの煩わしさに直面したわけです。「やっぱり、自動化必要だわ」ということになり、いろいろと調べた結果、いくつかヒントになる記事を見つけました。
[blogcard url="https://www.atmarkit.co.jp/ait/articles/1704/10/news134.html"]
[blogcard url="https://github.com/atinfinity/lab/wiki/OpenCVビルド用スクリプト"]
もっと自動化したい
特に「OpenCVビルド用スクリプト」には各バージョン毎のビルドバッチが掲載されていたので、はじめの頃はこれをそのまま使用させてもらいました。
処理の流れはCMakeでプロジェクトを作成してVisualStudioでビルドするという一連の流れをコマンドラインでやっているだけです。
このバッチが使えたことで、あの煩わしいポチポチ作業からまずは解放されました。
「OpenCVビルド用スクリプト」 に掲載されてるビルドバッチはVisual Studioのバオジョンごと、CUDAやQtの有無ごとにバッチファイルを準備しているので、これをなんとか一つのバッチファイルで制御したいと思うわけです。
下記の7つを引数で切り替えることにしました。
- Visual Studioのバージョン
- DLLとstaticlib
- x64とx86
- CUDAの使用有無
- Qtの使用有無
- worldライブラリにまとめるか個別ライブラリに分けるか
- サンプルのビルドのオンオフ
これでバッチファイル組んで夜に実行させておけば朝にはビルドが完成しているというてはずになりました。
なんかHDDの容量がひっ迫しているんですけど
これでしばらく作業をしているとやけにハードディスクの容量が減るのが速いことに頭を悩ませることになりました。ビルドするとオブジェクトファイルなどの中間生成物が大量に吐き出されるため一度ビルドすると数百GBのファイルができあがります。最終的に使うファイルはヘッダファイルとライブラリ(DLL、LIB)ファイル、ユーティリティやサンプルのEXEファイルと設定ファイルぐらいなのでそれだけ取り出してしまえばあとは破棄してもいいんですが、貧乏性なんですね。せめてソースファイルときれいな状態のプロジェクトファイルはアーカイブしておきたいじゃないですか。ということで、中間生成物も削除できるようにしてみました。
buildフォルダを作成してその中にプロジェクトファイル、ビルドファイルを生成するようにしていたのですが、 buildtempフォルダ を作ってビルド前に プロジェクトファイル をビルド後に使用するファイルを buildtempフォルダ にコピーするようにしました。これで作業終了後 buildフォルダ を削除すると中間生成物が削除されて、必要なファイルファイルだけが残るようになります。
それでも定期的に見直す必要がある
はじめの頃はOpenCVの新しいバージョンが出るたびにバッチの内容を見直していましたが、現在は OpenCV 4のメジャーバージョンアップの時に見直しを入れたぐらいです。
やり方は一旦CMakeGUIでプロジェクトを作ってcmake.exe -Lでビルドオプションの一覧を抽出します。
H:\OpenCV\opencv410\buildtest>"C:\Program Files\CMake\bin\cmake.exe" -L CMake Warning: No source or binary directory provided. Both will be assumed to be the same as the current working directory, but note that this warning will become a fatal error in future CMake releases. CMake Error: The source directory "H:/OpenCV/opencv410/buildtest" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI. -- Cache values ANT_EXECUTABLE:FILEPATH=ANT_EXECUTABLE-NOTFOUND BUILD_CUDA_STUBS:BOOL=OFF BUILD_DOCS:BOOL=OFF BUILD_EXAMPLES:BOOL=OFF BUILD_IPP_IW:BOOL=ON BUILD_ITT:BOOL=ON BUILD_JASPER:BOOL=ON BUILD_JAVA:BOOL=ON BUILD_JPEG:BOOL=ON BUILD_LIST:STRING= BUILD_OPENEXR:BOOL=ON BUILD_PACKAGE:BOOL=ON BUILD_PERF_TESTS:BOOL=ON BUILD_PNG:BOOL=ON BUILD_PROTOBUF:BOOL=ON BUILD_SHARED_LIBS:BOOL=ON BUILD_TBB:BOOL=OFF BUILD_TESTS:BOOL=ON BUILD_TIFF:BOOL=ON BUILD_USE_SYMLINKS:BOOL=OFF BUILD_WEBP:BOOL=ON BUILD_WITH_DEBUG_INFO:BOOL=OFF BUILD_WITH_DYNAMIC_IPP:BOOL=OFF BUILD_WITH_STATIC_CRT:BOOL=ON BUILD_ZLIB:BOOL=ON BUILD_opencv_apps:BOOL=ON BUILD_opencv_calib3d:BOOL=ON BUILD_opencv_core:BOOL=ON BUILD_opencv_dnn:BOOL=ON BUILD_opencv_features2d:BOOL=ON BUILD_opencv_flann:BOOL=ON BUILD_opencv_gapi:BOOL=ON BUILD_opencv_highgui:BOOL=ON BUILD_opencv_imgcodecs:BOOL=ON BUILD_opencv_imgproc:BOOL=ON BUILD_opencv_java_bindings_generator:BOOL=ON BUILD_opencv_js:BOOL=OFF BUILD_opencv_ml:BOOL=ON BUILD_opencv_objdetect:BOOL=ON BUILD_opencv_photo:BOOL=ON BUILD_opencv_python_bindings_generator:BOOL=ON BUILD_opencv_stitching:BOOL=ON BUILD_opencv_ts:BOOL=ON BUILD_opencv_video:BOOL=ON BUILD_opencv_videoio:BOOL=ON BUILD_opencv_world:BOOL=OFF CLAMDBLAS_INCLUDE_DIR:PATH=CLAMDBLAS_INCLUDE_DIR-NOTFOUND CLAMDBLAS_ROOT_DIR:PATH=CLAMDBLAS_ROOT_DIR-NOTFOUND CLAMDFFT_INCLUDE_DIR:PATH=CLAMDFFT_INCLUDE_DIR-NOTFOUND CLAMDFFT_ROOT_DIR:PATH=CLAMDFFT_ROOT_DIR-NOTFOUND CMAKE_CONFIGURATION_TYPES:STRING=Debug;Release CMAKE_INSTALL_PREFIX:PATH=H:/OpenCV/opencv410/buildtest/install CPU_BASELINE:STRING=SSE3 CPU_DISPATCH:STRING=SSE4_1;SSE4_2;AVX;FP16;AVX2;AVX512_SKX CV_DISABLE_OPTIMIZATION:BOOL=OFF CV_ENABLE_INTRINSICS:BOOL=ON CV_TRACE:BOOL=ON DC1394_INCLUDE:PATH=DC1394_INCLUDE-NOTFOUND DC1394_LIBRARY:FILEPATH=DC1394_LIBRARY-NOTFOUND EIGEN_INCLUDE_PATH:PATH=EIGEN_INCLUDE_PATH-NOTFOUND ENABLE_BUILD_HARDENING:BOOL=OFF ENABLE_CCACHE:BOOL=OFF ENABLE_CONFIG_VERIFICATION:BOOL=OFF ENABLE_FLAKE8:BOOL=OFF ENABLE_IMPL_COLLECTION:BOOL=OFF ENABLE_INSTRUMENTATION:BOOL=OFF ENABLE_LTO:BOOL=OFF ENABLE_NOISY_WARNINGS:BOOL=OFF ENABLE_PIC:BOOL=ON ENABLE_PRECOMPILED_HEADERS:BOOL=ON ENABLE_PYLINT:BOOL=OFF ENABLE_SOLUTION_FOLDERS:BOOL=ON EXECUTABLE_OUTPUT_PATH:PATH=H:/OpenCV/opencv410/buildtest/bin GSTREAMER_app_LIBRARY:FILEPATH=GSTREAMER_app_LIBRARY-NOTFOUND GSTREAMER_base_LIBRARY:FILEPATH=GSTREAMER_base_LIBRARY-NOTFOUND GSTREAMER_glib_INCLUDE_DIR:PATH=GSTREAMER_glib_INCLUDE_DIR-NOTFOUND GSTREAMER_glib_LIBRARY:FILEPATH=GSTREAMER_glib_LIBRARY-NOTFOUND GSTREAMER_glibconfig_INCLUDE_DIR:PATH=GSTREAMER_glibconfig_INCLUDE_DIR-NOTFOUND GSTREAMER_gobject_LIBRARY:FILEPATH=GSTREAMER_gobject_LIBRARY-NOTFOUND GSTREAMER_gst_INCLUDE_DIR:PATH=GSTREAMER_gst_INCLUDE_DIR-NOTFOUND GSTREAMER_gstreamer_LIBRARY:FILEPATH=GSTREAMER_gstreamer_LIBRARY-NOTFOUND GSTREAMER_pbutils_LIBRARY:FILEPATH=GSTREAMER_pbutils_LIBRARY-NOTFOUND GSTREAMER_riff_LIBRARY:FILEPATH=GSTREAMER_riff_LIBRARY-NOTFOUND INSTALL_CREATE_DISTRIB:BOOL=OFF INSTALL_C_EXAMPLES:BOOL=OFF INSTALL_PYTHON_EXAMPLES:BOOL=OFF INSTALL_TESTS:BOOL=OFF LAPACK_CBLAS_H:STRING= LAPACK_IMPL:STRING=Unknown LAPACK_INCLUDE_DIR:PATH= LAPACK_LAPACKE_H:STRING= LAPACK_LIBRARIES:STRING= MKL_INCLUDE_DIRS:PATH=MKL_ROOT_DIR-NOTFOUND/include MKL_ROOT_DIR:PATH=MKL_ROOT_DIR-NOTFOUND MKL_WITH_OPENMP:BOOL=OFF MKL_WITH_TBB:BOOL=OFF M_LIBRARY:FILEPATH=M_LIBRARY-NOTFOUND OPENCL_FOUND:BOOL=ON OPENCV_CONFIG_FILE_INCLUDE_DIR:PATH=H:/OpenCV/opencv410/buildtest OPENCV_DNN_OPENCL:BOOL=ON OPENCV_DOWNLOAD_PATH:PATH=H:/OpenCV/opencv410/sources/.cache OPENCV_DUMP_HOOKS_FLOW:BOOL=OFF OPENCV_ENABLE_NONFREE:BOOL=OFF OPENCV_EXTRA_MODULES_PATH:PATH= OPENCV_FORCE_3RDPARTY_BUILD:BOOL=OFF OPENCV_GENERATE_PKGCONFIG:BOOL=OFF OPENCV_GENERATE_SETUPVARS:BOOL=ON OPENCV_JAVA_SOURCE_VERSION:STRING= OPENCV_JAVA_TARGET_VERSION:STRING= OPENCV_PYTHON3_VERSION:BOOL=OFF OPENCV_TIMESTAMP:STRING=2019-05-08T15:34:25Z OPENCV_WARNINGS_ARE_ERRORS:BOOL=OFF OpenCV_HAL_DIR:PATH=OpenCV_HAL_DIR-NOTFOUND PROTOBUF_UPDATE_FILES:BOOL=OFF PYTHON2_EXECUTABLE:FILEPATH= PYTHON2_INCLUDE_DIR:PATH= PYTHON2_INCLUDE_DIR2:PATH= PYTHON2_LIBRARY:FILEPATH= PYTHON2_LIBRARY_DEBUG:FILEPATH= PYTHON2_NUMPY_INCLUDE_DIRS:PATH= PYTHON2_PACKAGES_PATH:PATH= PYTHON3_EXECUTABLE:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/python.exe PYTHON3_INCLUDE_DIR:PATH=C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/include PYTHON3_INCLUDE_DIR2:PATH= PYTHON3_LIBRARY:FILEPATH=C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/libs/python36.lib PYTHON3_LIBRARY_DEBUG:FILEPATH=PYTHON_DEBUG_LIBRARY-NOTFOUND PYTHON3_NUMPY_INCLUDE_DIRS:PATH= PYTHON3_PACKAGES_PATH:PATH=C:/Program Files (x86)/Microsoft Visual Studio/Shared/Python36_64/Lib/site-packages USE_WIN32_FILEIO:BOOL=ON VTK_DIR:PATH=VTK_DIR-NOTFOUND WITH_1394:BOOL=ON WITH_ADE:BOOL=ON WITH_ARITH_DEC:BOOL=ON WITH_ARITH_ENC:BOOL=ON WITH_CLP:BOOL=OFF WITH_CUDA:BOOL=OFF WITH_DIRECTX:BOOL=ON WITH_DSHOW:BOOL=ON WITH_EIGEN:BOOL=ON WITH_FFMPEG:BOOL=ON WITH_GDAL:BOOL=OFF WITH_GDCM:BOOL=OFF WITH_GSTREAMER:BOOL=ON WITH_HALIDE:BOOL=OFF WITH_HPX:BOOL=OFF WITH_IMGCODEC_HDR:BOOL=ON WITH_IMGCODEC_PFM:BOOL=ON WITH_IMGCODEC_PXM:BOOL=ON WITH_IMGCODEC_SUNRASTER:BOOL=ON WITH_INF_ENGINE:BOOL=OFF WITH_IPP:BOOL=ON WITH_ITT:BOOL=ON WITH_JASPER:BOOL=ON WITH_JPEG:BOOL=ON WITH_LAPACK:BOOL=ON WITH_LIBREALSENSE:BOOL=OFF WITH_MFX:BOOL=OFF WITH_MSMF:BOOL=ON WITH_MSMF_DXVA:BOOL=ON WITH_OPENCL:BOOL=ON WITH_OPENCLAMDBLAS:BOOL=ON WITH_OPENCLAMDFFT:BOOL=ON WITH_OPENCL_D3D11_NV:BOOL=ON WITH_OPENCL_SVM:BOOL=OFF WITH_OPENEXR:BOOL=ON WITH_OPENGL:BOOL=OFF WITH_OPENMP:BOOL=OFF WITH_OPENNI:BOOL=OFF WITH_OPENNI2:BOOL=OFF WITH_OPENVX:BOOL=OFF WITH_PNG:BOOL=ON WITH_PROTOBUF:BOOL=ON WITH_PVAPI:BOOL=OFF WITH_QT:BOOL=OFF WITH_QUIRC:BOOL=ON WITH_TBB:BOOL=OFF WITH_TIFF:BOOL=ON WITH_VTK:BOOL=ON WITH_VULKAN:BOOL=OFF WITH_WEBP:BOOL=ON WITH_WIN32UI:BOOL=ON WITH_XIMEA:BOOL=OFF ccitt:BOOL=ON logluv:BOOL=ON lzw:BOOL=ON mdi:BOOL=ON next:BOOL=ON old-jpeg:BOOL=OFF opencv_dnn_PERF_CAFFE:BOOL=OFF opencv_dnn_PERF_CLCAFFE:BOOL=OFF packbits:BOOL=ON thunder:BOOL=ON
こんな感じで出てきますのでバッチファイルに記載しているビルドオプションと比較して必要なオプションを追加したり、なくなったオプションを削除します。
バッチファイル
ある程度汎用に組んだつもりですがあくまでも自分の環境で動くように作っています。これを使う人は多分経験者だと思うので、そのまま使って動かないとか言う人はいないとは思いますが、自分自身の環境で動くようにカスタマイズして使ってください。 OpenCV 4.1.0のビルドで使ったものです。
実行するときは OpenCV ソースを解凍した場所をカンレントにしてそこにバッチファイルを置いて管理者権限のコマンドプロンプトから実行です。
::buildocv32.bat ::第一引数 ::バッチファイル引数の検査 ::使用するVisual Studioのバージョン ::引数の種類:2010 2012 2013 2015 2017 set VS_NUM=%1 if %VS_NUM% == 2010 ( set VC_VERSION_NUM=10 ) else if %VS_NUM% == 2012 ( set VC_VERSION_NUM=11 ) else if %VS_NUM% == 2013 ( set VC_VERSION_NUM=12 ) else if %VS_NUM% == 2015 ( set VC_VERSION_NUM=14 ) else if %VS_NUM% == 2017 ( set VC_VERSION_NUM=15 ) else ( exit /b ) ::第二引数 ::ビルドするライブラリの種類 ::引数の種類 lib dll ::staticlib or DLL if %2 == lib ( set LIB_KIND=staticlib set BUILD_SHARED_LIBS=OFF ) else if %2 == dll ( set LIB_KIND=DLL set BUILD_SHARED_LIBS=ON ) else ( exit /b ) ::第三引数 ::使用するプラットフォームの種類 ::引数の種類 86 64 set PLATNUM=%3 if %PLATNUM% == 86 ( set PLATFORM=x86 set ARCH=x86 set TBB_PLATFORM=ia32 set OPENCV_HDF=OFF ) else if %PLATNUM% == 64 ( set PLATFORM=x64 set ARCH=amd64 set TBB_PLATFORM=intel64 set OPENCV_HDF=ON ) else ( exit /b ) ::第四引数 ::CUDAの使用有無 ::CUDAを使用する場合は環境に応じて個別にコンパイルする必要がある。 ::引数の種類 wc woc ::CUDA_ARCH_BINの値はhttps://developer.nvidia.com/cuda-gpusで確認して ::使用しているGPUの値を入力する。 if %4 == wc ( set WITH_CUDA=ON set INSTALL_DIRNAME_CUDA=WithCUDA set CUDA_ARCH_BIN="5.0" set CUDA_ARCH_PTX="" ) else if %4 == woc ( set WITH_CUDA=OFF set INSTALL_DIRNAME_CUDA=WithoutCUDA set CUDA_ARCH_BIN="" set CUDA_ARCH_PTX="" ) else ( exit /b ) ::使用できるQtのVersion ::Qtの最新バージョンはC++11が必須となったため、使用できるのはVS2013以降 ::VS2012以前は5.6.2が最終サポート if %VS_NUM% geq 2013 ( set QT_VERSION_NUM=5.11.1 ) else ( set QT_VERSION_NUM=5.6.2 ) ::第五引数 ::Qtの使用有無 ::引数の種類 wq woq if %5 == wq ( set WITH_Qt=ON set WITH_WIN32UI=OFF set INSTALL_DIRNAME_QT=WithQt set QT5_DIR=qt\DLL\%QT_VERSION_NUM%-msvc%VS_NUM%-x%PLATNUM%-opengl set QT5CONCURRENT_DIR="%QT5_DIR%/lib/cmake/Qt5Concurrent" set QT5CORE_DIR="%QT5_DIR%/lib/cmake/Qt5Core" set QT5GUI_DIR="%QT5_DIR%/lib/cmake/Qt5Gui" set QT5OPENGL_DIR="%QT5_DIR%/lib/cmake/Qt5OpenGL" set QT5TEST_DIR="%QT5_DIR%/lib/cmake/Qt5Test" ^ set QT5WIDGETS_DIR="%QT5_DIR%/lib/cmake/Qt5Widgets" ) else if %5 == woq ( set WITH_Qt=OFF set WITH_WIN32UI=ON set INSTALL_DIRNAME_QT=WithoutQt set QT5_DIR="" set QT5CONCURRENT_DIR="" set QT5CORE_DIR="" set QT5GUI_DIR="" set QT5OPENGL_DIR="" set QT5TEST_DIR="" set QT5WIDGETS_DIR="" ) else ( exit /b ) ::第六引数 ::world or core ::引数の種類 world core if %6 == world ( set LIB_WORLD=world set BUILD_OPENCV_WORLD=ON ) else if %6 == core ( set LIB_WORLD=core set BUILD_OPENCV_WORLD=OFF ) else ( exit /b ) ::第七引数 ::サンプルのビルド ::引数の種類 ex nex if %7 == ex ( set BUILD_EXAMPLES=ON ) else if %7 == nex ( set BUILD_EXAMPLES=OFF ) else ( exit /b ) :: setting of the environment variables set CURRENT_DIR=%~dp0 set SOURCE_DIR=%CURRENT_DIR%sources if %VS_NUM% geq 2017 ( set VCVARSALL_BAT="C:\Program Files (x86)\Microsoft Visual Studio\%VS_NUM%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ) else ( set VCVARSALL_BAT="C:\Program Files (x86)\Microsoft Visual Studio %VC_VERSION_NUM%.0\VC\vcvarsall.bat" ) set CMAKE_PATH="C:\Program Files\CMake\bin\cmake.exe" set MKDIR_NAME=build\%INSTALL_DIRNAME_CUDA%\%INSTALL_DIRNAME_QT%\%LIB_WORLD%\%LIB_KIND%\%PLATFORM%\vs%VS_NUM% set MKDIR_NAME2=buildtemp\%INSTALL_DIRNAME_CUDA%\%INSTALL_DIRNAME_QT%\%LIB_WORLD%\%LIB_KIND%\%PLATFORM%\vs%VS_NUM% set BUILD_DIR=%CURRENT_DIR%%MKDIR_NAME% set INSTALL_DIR=%BUILD_DIR%\install set SAVE_DIR=%CURRENT_DIR%%MKDIR_NAME2% if %ARCH% == amd64 ( set GENERATOR_NAME=Visual Studio %VC_VERSION_NUM% %VS_NUM% Win64 ) else if %ARCH% == x86 ( set GENERATOR_NAME=Visual Studio %VC_VERSION_NUM% %VS_NUM% ) else ( exit /b ) ::TBBの設定 ::VS2010、VS2012のサポートはVer4.4 Update 6まで if %VS_NUM% geq 2013 ( set TBB_VERSION=tbb2019_20190410oss ) else ( set TBB_VERSION=tbb44_20160803oss ) ::VS2017対応のTBBはvc14フォルダに格納されている。 if %VS_NUM% == 2017 ( set TBB_VC=vc14 ) else ( set TBB_VC=vc%VC_VERSION_NUM% ) ::QRコードコーデックはVC2013非対応 if %VS_NUM% == 2013 ( set WITH_QUIRC=OFF ) else ( set WITH_QUIRC=ON ) set TBB_ROOT=%CURRENT_DIR%%TBB_VERSION% set TBB_ENV_INCLUDE="%TBB_ROOT%/include" set TBB_ENV_LIB="%TBB_ROOT%/lib/%TBB_PLATFORM%/%TBB_VC%/tbb.lib" set TBB_ENV_LIB_DEBUG="%TBB_ROOT%/lib/%TBB_PLATFORM%/%TBB_VC%/tbb_debug.lib" ::Eigenの設定 set EIGEN_VER=eigen3.3.7 ::pythonのあるフォルダ ::set PYTHON_DIR=C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_%PLATNUM% set PYTHON_DIR=C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_%PLATNUM% ::pythonのあるフォルダにpathを通す set PATH=%PYTHON_DIR%;%PATH% ::opencv_contrib、Python3の設定 if %VS_NUM% geq 2013 ( set OPENCV_EXTRA_MODULES_PATH="%CURRENT_DIR%opencv_contrib-4.1.0\modules" set OPENCV_PYTHON3=ON set PYTHON_INCLUDE_DIR="%PYTHON_DIR%\include" set PYTHON_LIBRARY="%PYTHON_DIR%\libs\python36.lib" ) else ( set OPENCV_EXTRA_MODULES_PATH="" set OPENCV_PYTHON3=OFF set PYTHON_INCLUDE_DIR="" set PYTHON_LIBRARY="" ) ::Visual C++ ツールセットの有効化 call %VCVARSALL_BAT% %ARCH% echo on ::作業フォルダの作成と移動 mkdir %MKDIR_NAME% mkdir %MKDIR_NAME2% mkdir %MKDIR_NAME2%\..\..\install\vs%VS_NUM% cd %MKDIR_NAME% :: runnig CMake %CMAKE_PATH% ^ -G "%GENERATOR_NAME%" ^ --build "%BUILD_DIR%" ^ -D BUILD_CUDA_STUBS=OFF ^ -D BUILD_DOCS=OFF ^ -D BUILD_EXAMPLES=%BUILD_EXAMPLES% ^ -D BUILD_JASPER=ON ^ -D BUILD_JPEG=ON ^ -D BUILD_OPENEXR=ON ^ -D BUILD_PACKAGE=ON ^ -D BUILD_PERF_TESTS=OFF ^ -D BUILD_PNG=ON ^ -D BUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% ^ -D BUILD_TBB=OFF ^ -D BUILD_TESTS=OFF ^ -D BUILD_TIFF=ON ^ -D BUILD_WITH_DEBUG_INFO=ON ^ -D BUILD_WITH_STATIC_CRT=ON ^ -D BUILD_ZLIB=ON ^ -D BUILD_WEBP=ON ^ -D BUILD_opencv_apps=ON ^ -D BUILD_opencv_calib3d=ON ^ -D BUILD_opencv_core=ON ^ -D BUILD_opencv_cudaarithm=%WITH_CUDA% ^ -D BUILD_opencv_cudabgsegm=%WITH_CUDA% ^ -D BUILD_opencv_cudacodec=%WITH_CUDA% ^ -D BUILD_opencv_cudafeatures2d=%WITH_CUDA% ^ -D BUILD_opencv_cudafilters=%WITH_CUDA% ^ -D BUILD_opencv_cudaimgproc=%WITH_CUDA% ^ -D BUILD_opencv_cudalegacy=%WITH_CUDA% ^ -D BUILD_opencv_cudaobjdetect=%WITH_CUDA% ^ -D BUILD_opencv_cudaoptflow=%WITH_CUDA% ^ -D BUILD_opencv_cudastereo=%WITH_CUDA% ^ -D BUILD_opencv_cudawarping=%WITH_CUDA% ^ -D BUILD_opencv_cudev=%WITH_CUDA% ^ -D BUILD_opencv_features2d=ON ^ -D BUILD_opencv_flann=ON ^ -D BUILD_opencv_highgui=ON ^ -D BUILD_opencv_imgcodecs=ON ^ -D BUILD_opencv_imgproc=ON ^ -D BUILD_opencv_java=OFF ^ -D BUILD_opencv_ml=ON ^ -D BUILD_opencv_objdetect=ON ^ -D BUILD_opencv_photo=ON ^ -D BUILD_opencv_python2=OFF ^ -D BUILD_opencv_python3=%OPENCV_PYTHON3% ^ -D BUILD_opencv_shape=ON ^ -D BUILD_opencv_stitching=ON ^ -D BUILD_opencv_superres=ON ^ -D BUILD_opencv_ts=ON ^ -D BUILD_opencv_video=ON ^ -D BUILD_opencv_videoio=ON ^ -D BUILD_opencv_videostab=ON ^ -D BUILD_opencv_viz=OFF ^ -D BUILD_opencv_world=%BUILD_OPENCV_WORLD% ^ -D PYTHON_INCLUDE_DIR=%PYTHON_INCLUDE_DIR% ^ -D PYTHON_LIBRARY=%PYTHON_LIBRARY% ^ -D CMAKE_CONFIGURATION_TYPES="Debug;Release" ^ -D CMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^ -D OPENCV_EXTRA_MODULES_PATH=%OPENCV_EXTRA_MODULES_PATH% ^ -D BUILD_opencv_hdf=%OPENCV_HDF% ^ -D EIGEN_INCLUDE_PATH="%CURRENT_DIR%%EIGEN_VER%" ^ -D TBB_ENV_INCLUDE=%TBB_ENV_INCLUDE% ^ -D TBB_ENV_LIB=%TBB_ENV_LIB% ^ -D TBB_ENV_LIB_DEBUG=%TBB_ENV_LIB_DEBUG% ^ -D CUDA_ARCH_BIN=%CUDA_ARCH_BIN% ^ -D CUDA_ARCH_PTX=%CUDA_ARCH_PTX% ^ -D Qt5Concurrent_DIR="%QT5CONCURRENT_DIR%" ^ -D Qt5Core_DIR="%QT5CORE_DIR%" ^ -D Qt5Gui_DIR="%QT5GUI_DIR%" ^ -D Qt5OpenGL_DIR="%QT5OPENGL_DIR%" ^ -D Qt5Test_DIR="%QT5TEST_DIR%" ^ -D Qt5Widgets_DIR="%QT5WIDGETS_DIR%" ^ -D WITH_1394=OFF ^ -D WITH_CUBLAS=%WITH_CUDA% ^ -D WITH_CUDA=%WITH_CUDA% ^ -D WITH_CUFFT=%WITH_CUDA% ^ -D WITH_DIRECTX=ON ^ -D WITH_DSHOW=ON ^ -D WITH_EIGEN=ON ^ -D WITH_FFMPEG=ON ^ -D WITH_GDAL=OFF ^ -D WITH_IPP=ON ^ -D WITH_IPP_A=OFF ^ -D WITH_JASPER=ON ^ -D WITH_JPEG=ON ^ -D WITH_MSMF=ON ^ -D WITH_NVCUVID=%WITH_CUDA% ^ -D WITH_OPENCL=ON ^ -D WITH_OPENCLAMDBLAS=OFF ^ -D WITH_OPENCLAMDFFT=OFF ^ -D WITH_OPENCL_SVM=OFF ^ -D WITH_OPENEXR=ON ^ -D WITH_OPENGL=ON ^ -D WITH_OPENMP=OFF ^ -D WITH_OPENNI=OFF ^ -D WITH_OPENNI2=OFF ^ -D WITH_OPENVX=OFF ^ -D WITH_PNG=ON ^ -D WITH_PVAPI=OFF ^ -D WITH_QT=%WITH_Qt% ^ -D WITH_TBB=ON ^ -D WITH_TIFF=ON ^ -D WITH_VFW=OFF ^ -D WITH_VTK=OFF ^ -D WITH_WEBP=ON ^ -D WITH_QUIRC=%WITH_QUIRC% ^ -D WITH_WIN32UI=%WITH_WIN32UI% ^ -D WITH_XIMEA=OFF %SOURCE_DIR% xcopy /S /Y /I /F * %SAVE_DIR%\ :: Building the OpenCV(Debug/Release) using Visual Studio if %PLATFORM% == x86 ( devenv /build "Debug|Win32" /project "INSTALL" OpenCV.sln devenv /build "Release|Win32" /project "INSTALL" OpenCV.sln ) else ( devenv /build "Debug|x64" /project "INSTALL" OpenCV.sln devenv /build "Release|x64" /project "INSTALL" OpenCV.sln ) ::mkdir ..\..\install xcopy /S /Y /I /F install\* %SAVE_DIR%\..\..\install\vs%VS_NUM% cd ..\..\..\..\..\..\
私は次のようなビルド用のバッチファイルを組んで夜間に実行させています。
処理の内容をテキストに吐き出すようにしておくとエラーが出たときに役立ちます。
start /wait cmd /c "buildocv32 2017 dll 86 woc woq world nex>2017_dll_86_woc_woq.txt" echo on start /wait cmd /c "buildocv32 2017 dll 64 woc woq world ex>2017_dll_64_woc_woq.txt" echo on start /wait cmd /c "buildocv32 2017 lib 86 woc woq world nex>2017_lib_86_woc_woq.txt" echo on start /wait cmd /c "buildocv32 2017 lib 64 woc woq world nex>2017_lib_64_woc_woq.txt" echo on
ディスカッション
コメント一覧
まだ、コメントがありません