얼마전 공개가 된 OpenCV 2.2 버전을 TBB 와 결합하여 컴파일을 해 보았다.
컴파일 하는 방법은 지난 번에 올리 글에서 소개한 방법과 다르지 않다.
요약하여 정리하면 다음과 같다.

준비 사항
  • OpenCV 2.2 소스 (OpenCV-2.2.0-win.zip 다운로드)
  • CMake 2.8.3 설치파일 (cmake-2.8.3-win32-x86.exe 다운로드)
  • Intel TBB (tbb30_20101215oss_win.zip 다운로드)
  • Visual C++ 2010 Compiler

컴파일
  • CMake 를 설치한다.
  • 임의의 위치에 OpenCV 소스를 x86과 x64폴더에 각각 풀어 놓는다. 
    • F:/Dev/OpenCV/VC2010_TBB
  • 임의의 위치에 Intel TBB 소스를 풀어 놓는다.
    • F:/Dev/OpenCV/VC2010_TBB
  • CMake (cmake-gui) 를 실행한다.
  • CMake source code 경로와 binaries 경로에 각각의 platform 에 맞는 경로를 입력또는 설정한다.
    • x86 : F:/Dev/OpenCV/VC2010_TBB/x86
    • x64 : F:/Dev/OpenCV/VC2010_TBB/x64
  • 변수 목록 하단의 Configure 를 클릭 하고 각각의 platform 에 맞는 컴파일러를 설정한다.
    • x86 : Visual Studio 2010
    • x64 : Visual Studio 2010 Win64
  • 변수 목록 중에서 WITH_TBB 를 설정하고 다시 한 번 Configure 한다.
  • TBB_INCLUDE_DIR 항목이 붉은색으로 나오는데 이 항목에 TBB include 경로를 설정하고 Configure 한다.
    • F:/Dev/OpenCV/VC2010_TBB/tbb30/include
  • TBB_LIB_DIR 항목이 붉은색으로 나오는데 이 항목에 각각의 platform 에 맞는 경로를 설정하고 Configure 한다.
    • x86 : F:/Dev/OpenCV/VC2010_TBB/tbb30/lib/ia32/vc10
    • x64 : F:/Dev/OpenCV/VC2010_TBB/tbb30/lib/intel64/vc10
  • 붉은 색으로 표시되는 항목이 없느면 Generate 를 클릭하여 솔루션(.sln) 파일을 생성한다.
  • 각각의 platform 의 OpenCV 경로에 생성된 OpenCV.sln 파일을 열어서 컴파일 한다.
    • 필요에 따라 아래 방법에 따라 x86과 x64의 라이브러리를 분리 한다.

x86 과 x64 용 라이브러리 분리한다.
표현이 잘 못된 것 같기도 한데 x86과 x64용 .lib 파일과 .dll 파일을 구분되도록 컴파일 하는 것이다. 그러면 OpenCV 를 사용하는 32비트 프로그램과 64비트 프로그램을 같은 경로에 놓고 사용할 수 있다.
x64 platform 안에 있는 모든 .vcxproj 파일 중에서 ALL_BUILD 와 INSTALL 파일을 제외하고 .vcxproj 파일 안에 포함되어 있는 내용중 TargetName 과 .lib 파일에 대하여 32비트(x86)과 구분지어 지도록 수정을 하면 된다.
이 작업에서 64비트(x64)용에는 TargetName 과 .lib 파일명의 뒤에 x64 를 붙여 구분하도록 작업을 하였다. 아래의 내용이 변경 작업을 한 내용이며 굵은 글씨가 추가된 내용이다.

Debug 의 경우
opencv_calib3d220d_x64</TargetName>
opencv_contrib220d_x64</TargetName>
opencv_core220d_x64</TargetName>
opencv_createsamplesd_x64</TargetName>
opencv_features2d220d_x64</TargetName>
opencv_flann220d_x64</TargetName>
opencv_gpu220d_x64</TargetName>
opencv_haartrainingd_x64</TargetName>
opencv_haartraining_engined_x64</TargetName>
opencv_highgui220d_x64</TargetName>
opencv_imgproc220d_x64</TargetName>
opencv_legacy220d_x64</TargetName>
opencv_ml220d_x64</TargetName>
opencv_objdetect220d_x64</TargetName>
opencv_performanced_x64</TargetName>
opencv_traincascaded_x64</TargetName>
opencv_ts220d_x64</TargetName>
opencv_video220d_x64</TargetName>

opencv_calib3d220d_x64.lib
opencv_contrib220d_x64.lib
opencv_core220d_x64.lib
opencv_createsamplesd_x64.lib
opencv_features2d220d_x64.lib
opencv_flann220d_x64.lib
opencv_gpu220d_x64.lib
opencv_haartrainingd_x64.lib
opencv_haartraining_engined_x64.lib
opencv_highgui220d_x64.lib
opencv_imgproc220d_x64.lib
opencv_legacy220d_x64.lib
opencv_ml220d_x64.lib
opencv_objdetect220d_x64.lib
opencv_performanced_x64.lib
opencv_traincascaded_x64.lib
opencv_ts220d_x64.lib
opencv_video220d_x64.lib

Release 의 경우
opencv_calib3d220_x64</TargetName>
opencv_contrib220_x64</TargetName>
opencv_core220_x64</TargetName>
opencv_createsamples_x64<TargetName>
opencv_features2d220_x64</TargetName>
opencv_flann220_x64</TargetName>
opencv_gpu220_x64</TargetName>
opencv_haartraining_x64</TargetName>
opencv_haartraining_engine_x64</TargetName>
opencv_highgui220_x64</TargetName>
opencv_imgproc220_x64</TargetName>
opencv_legacy220_x64</TargetName>
opencv_ml220_x64</TargetName>
opencv_objdetect220_x64</TargetName>
opencv_performance_x64</TargetName>
opencv_traincascade_x64</TargetName>
opencv_ts220_x64</TargetName>
opencv_video220_x64</TargetName>

opencv_calib3d220_x64.lib
opencv_contrib220_x64.lib
opencv_core220_x64.lib
opencv_createsamples_x64.lib
opencv_features2d220_x64.lib
opencv_flann220_x64.lib
opencv_gpu220_x64.lib
opencv_haartraining_x64.lib
opencv_haartraining_engine_x64.lib
opencv_highgui220_x64.lib
opencv_imgproc220_x64.lib
opencv_legacy220_x64.lib
opencv_ml220_x64.lib
opencv_objdetect220_x64.lib
opencv_performance_x64.lib
opencv_traincascade_x64.lib
opencv_ts220_x64.lib
opencv_video220_x64.lib

결과물에 대해서는 아직 테스트를 하지 않았고 용량도 커서 첨부하지 않았다.
Posted by NeoDreamer
:
BLOG main image
사람의 발목을 잡는건 '절망'이 아니라 '체념'이고 앞으로 나아가게 하는건 '희망'이 아니라 '의지'다. - 암스 중에서 - by NeoDreamer

공지사항

카테고리

전체보기 (793)
Life Story (1)
Thinking (2)
Nothing (5)
---------------* (0)
Dev Story (701)
Com. Story (80)
IT Story (1)
---------------+ (0)
Etc (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :
05-10 06:28