오랜만에 Poco 라이브러리 1.9 버전을 빌드해 보았다.

얼마전부터 계속 시도해 보았지만 OpenSSL을 포함하는데 문제가 있어서 계속 실패를 하다가 인터넷을 통해 도움을 얻어 드디어 성공하였다.

일단 Poco 라이브러리의 추가 포함 라이브러리는 목적에따라 OpenSSL과 MySQL을 추가할 수 있다.

언제든 사용할 수 있는 라이브러리라서 빌드할 때 이들을 추가해 놓으면 편할 것 같아서 항상 이를 포함하여 빌드한다.


우선 빌드에 필요한 것들은 다음과 같다.

Poco Library 1.9

https://github.com/pocoproject/poco

poco-poco-1.9.0-release.zip

OpenSSL

https://github.com/pocoproject/openssl

openssl-develop.zip

MySQL

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

mysql-5.7.23-win32.zip

mysql-5.7.23-winx64.zip


OpenSSL 빌드하기

https://github.com/pocoproject/openssl 에서 받은 소스를 빌드한다.

이미 Vsiual Studio 2013 버전으로 빌드가 되어있는 dll과 라이브러리가 소스에 포함되어있어 이를 이용하는 경우 빌드를 할 필요가 없다.

혹시 OpenSSL 버전을 변경하고자 하는경우 다시 빌드를 해야한다.

2018년 08월 17일 현재 올려져있는 버전은 1.1.0g 버전이다.

새롭게 빌드를 하고자 하는경우 소스를 압축해제하고 해제한 폴더에서 다음 명령을 수행하면 된다.

build.ps1을 실행하면 된다.

build.ps1 명령을 아래와 같은 형식이고,

build.ps1 [-openssl_release 1.0.0 | 1.1.0]

          [-vs_version 150 | 140 | 120 | 110 | 100 | 90]

          [-config     release | debug | both]

          [-platform   Win32 | x64] # TODO WinCE/WCE

          [-library    shared | static | both]

          

실행 예제는 다음과 같다.          

powershell -ExecutionPolicy RemoteSigned -File build.ps1 -openssl_release 1.1.0h -vs_version 120 -config both -platform x64 -library both


빌드를 하면 소스 경로에 VC_(버전번호) 의 폴더가 만들어지고 그 안에 결과 파일들이 생성된다.


Poco 추가 라이브러리 구성하기

먼저 Poco 라이브러리 소스 파일(poco-poco-1.9.0-release.zip)을 압축해제한다.

그리고 OpenSSL을 빌드를 하지 않은경우 openssl-develop.zip 파일의 build 폴더를 Poco 소스의 openssl 폴더에 복사한다.

OpenSSL을 빌드하였다면 결과 폴더(VC_(버전번호))를 openssl 폴더에 복사하고 이름을 build로 변경한다.


Poco 소스 폴더에 mysql 폴더를 생성하고 mysql-5.7.23-win32.zip 파일의 include 와 lib 폴더를 압축해제하고 lib 폴더는 lib32로 변경한다.

그리고 mysql-5.7.23-winx64.zip 파일의 lib 폴더를 mysql 폴더에 압축해제하고 lib64로 변경한다.

그러면 최종적으로 추가 생성된 폴더는 아래와 같은 구성된다.

poco-poco-1.9.0-release

openssl

build

include

openssl

win32

bin

lib

win64

bin

lib

mysql

include

lib32

lib64


빌드를 하기전에 buildwin.cmd 파일에서 위에서 구성한 mysql 폴더를 사용하도록 변경을 해 주어야한다.

PLATFORM 파라메터를 인식한 후에 아래 코드를 추가(62line)한다.

rem MySQL

set MYSQL_DIR=%POCO_BASE%\mysql

set MYSQL_INCLUDE=%MYSQL_DIR%\include

if "%PLATFORM%"=="Win32" (set MYSQL_LIB=%MYSQL_DIR%\lib32)

if "%PLATFORM%"=="x64" (set MYSQL_LIB=%MYSQL_DIR%\lib64)

set INCLUDE=%INCLUDE%;%MYSQL_INCLUDE%

set LIB=%LIB%;%MYSQL_LIB%


echo MySQL Path: %MYSQL_DIR%

echo Include: %INCLUDE%

echo Lib: %LIB%

pause


echo 명령과 pause 명령은 mysql 관련 설정이 제대로 되었는지 확인하기 위해 넣은 코드이다.


이제 Visual Studio 버전에 맞는 빌드 명령을 호출하면 된다.

buildwin.cmd 명령 형식은 다음과 같다.

Usage:

------

buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL]

VS_VERSION:    "90|100|110|120|140|150"

ACTION:        "build|rebuild|clean"

LINKMODE:      "static_mt|static_md|shared|all"

CONFIGURATION: "release|debug|both"

PLATFORM:      "Win32|x64|WinCE|WEC2013"

SAMPLES:       "samples|nosamples"

TESTS:         "tests|notests"

TOOL:          "devenv|vcexpress|wdexpress|msbuild"


아래 명령은 Visual Studio 2013 버전으로 빌드하기 위해 실행한 명령이다.

buildwin.cmd 120 build all both x64 samples tests msbuild


빠르게 빌드만 하려면 SAMPLES과 TESTS에 대하여 nosamples 와 notests로 설정하여 빌드한다.

'Dev Story' 카테고리의 다른 글

[Python] 컬러 영상의 채널 분리하기  (0) 2018.08.23
OpenCV 3.4.2 + VTK 8.1.1 빌드하기  (0) 2018.08.21
Hello Electron  (1) 2018.01.26
Poco Library 빌드하기 2  (0) 2017.11.10
Reading barcode with zxing-cpp and OpenCV Volume 2  (0) 2017.10.23
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 :
04-25 06:10