못할짓..


* openssl 1.0.2e windows

*32 bit

-x86 static debug library

perl Configure debug-VC-WIN32 --openssldir=C:\OpenSSL-x86-debug no-shared no-asm threads no-idea no-mdc2 no-rc5


-x86 static release library

perl Configure VC-WIN32 --openssldir=C:\OpenSSL-x86 no-shared no-asm threads no-idea no-mdc2 no-rc5


ms\do_ms

ms\nt.mak 편집

LIB_CFLAG=/Zl /Zi /Fd$(TMP_D)/lib 같이

/Zi 있으면 모두 /Z7 /Ylsymbol 로 변경

nmake -f ms\nt.mak clean

nmake -f ms\nt.mak

nmake -f ms\nt.mak install

*64 bit


-x64 static debug library

perl Configure debug-VC-WIN64A --openssldir=C:\OpenSSL-x64-debug no-shared no-asm threads no-idea no-mdc2 no-rc5


-x64 static release library

perl Configure VC-WIN64A --openssldir=C:\OpenSSL-x64 no-shared no-asm threads no-idea no-mdc2 no-rc5

 

ms\do_win64a.bat

ms\nt.mak 편집

LIB_CFLAG=/Zl /Zi /Fd$(TMP_D)/lib 같이

/Zi 있으면 모두 /Z7 /Ylsymbol 로 변경

nmake -f ms\nt.mak clean

nmake -f ms\nt.mak

nmake -f ms\nt.mak install

nmake -f ms\nt.mak clean


*사용

../openssl/include

#pragma comment(lib, "../openssl/lib/libeay32.lib")

#pragma comment(lib, "../openssl/lib/ssleay32.lib")


* zlib 1.2.8 windows

visual project 생성하여 소스/헤더 추가 후 statis 으로 컴파일




* apr windows

apr-1.5.2-win32-src.zip

apr-iconv-1.2.1-win32-src-r2.zip

apr-util-1.5.4-win32-src.zip


압축 해제 후

apr, apr-iconv, apr-util 폴더를 같은 디렉토리에 두고 apr-util 의 dsw 프로젝트 열어서 컴파일

컴파일 옵션

xml, apr, apriconv, aprutil 프로젝트만 컴파일(순서 필요)

1) C/C++ > 일반 > 디버깅 정보 형식 > C7 호환(/Z7)

2) C/C++ > 코드 생성 -> 최소 다시 빌드 가능 > 아니오

2) C/C++ > 코드생성 > 런타임 라이브러리 > MT/MTd

3) C/C++ >명령줄 > /Ylsymbol 입력


사용

xml.lib, apr-1.lib, aprutil-1.lib, apriconv-1.lib


* libserf 1.3.8 windows

http://serf.apache.org/

빌드한 lib/include 파일들을 SConstruct 경로데로 만든 후 빌드해야 함.

SConstruct 수정

/MD를 /MT로 변경

MSVC_VERSION 에 '14.0' 추가(vs2015)

env.Append(CCFLAGS=['/Od', '/MTd']) 부분에  env.Append(CCFLAGS='/Ylsymbol') 추가

그외 apr, apr-util, zlib, 등 include/lib 패스 수정

apr-iconv 추가

python c:\Python27\Scripts\scons.py -c

python C:\Python27\scripts\scons.py APR=D:\subversion\lib\apr APU=D:\subversion\lib\apr-util OPENSSL=D:\subversion\lib\openssl ZLIB=D:\subversion\lib\zlib APR_STATIC=true SOURCE_LAYOUT=true TARGET_ARCH=x86 PREFIX=D:\subversion\done\serf DEBUG=true

python C:\Python27\scripts\scons.py APR=D:\subversion\lib\apr APU=D:\subversion\lib\apr-util OPENSSL=D:\subversion\lib\openssl ZLIB=D:\subversion\lib\zlib APR_STATIC=true SOURCE_LAYOUT=true TARGET_ARCH=x86 PREFIX=D:\subversion\done\serf DEBUG=false

python C:\Python27\scripts\scons.py APR=D:\subversion\lib\apr APU=D:\subversion\lib\apr-util OPENSSL=D:\subversion\lib\openssl ZLIB=D:\subversion\lib\zlib APR_STATIC=true SOURCE_LAYOUT=true TARGET_ARCH=x86_64 PREFIX=D:\subversion\done\serf DEBUG=True 

python C:\Python27\scripts\scons.py APR=D:\subversion\lib\apr APU=D:\subversion\lib\apr-util OPENSSL=D:\subversion\lib\openssl ZLIB=D:\subversion\lib\zlib APR_STATIC=true SOURCE_LAYOUT=true TARGET_ARCH=x86_64 PREFIX=D:\subversion\done\serf DEBUG=false


* svn windows

압축 해제

apr-1.5.2-win32-src.zip

apr-iconv-1.2.1-win32-src-r2.zip

apr-util-1.5.4-win32-src.zip

openssl-1.0.2e.tar.gz

serf-1.3.8.zip

sqlite-amalgamation-201601261448.zip

subversion-1.9.3.zip

zlib128.zip

apr 컴파일

apr, apr-iconv, apr-util 폴더를 같은 디렉토리에 두고 apr-util 의 dsw 프로젝트 열어서

apr, apriconv, aprutil, xml 컴파일 (컴파일 시 생성되는 헤더들 때문임..)


python gen-make.py -t vcproj --debug --with-apr=D:\subversion\done\apr --with-apr-util=D:\subversion\done\apr-util --with-apr-iconv=D:\subversion\done\apr-iconv --with-serf=D:\subversion\done\serf-1.3.8 --with-openssl=D:\subversion\done\openssl-1.0.2e --with-zlib=D:\subversion\done\zlib-1.2.8 --with-sqlite=D:\subversion\done\sqlite-amalgamation-201601261448 --disable-shared --with-static-apr --with-static-openssl --vsnet-version=2015 --disable-gmock

subversion_msvc.sln 생성 되면 열어서 Libraries/libsvn_client 컴파일

libsvn_subr 프로젝트 전처리기에서 SVN_USE_WIN32_CRASHHANDLER 제거 하기.

(google-breakpad 사용하기 위함)


1) C/C++ > 일반 > 디버깅 정보 형식 > C7 호환(/Z7)

2) C/C++ > 코드 생성 -> 최소 다시 빌드 가능 > 아니오

2) C/C++ > 코드생성 > 런타임 라이브러리 > MT/MTd

3) C/C++ >명령줄 > /Ylsymbol 입력




사용

apr 의 경우 static이므로 APR_DECLARE_STATIC 전처리기(디파인) 추가

추가해야할 lib

# pragma comment( lib, "ws2_32.lib")

# pragma comment( lib, "mswsock.lib")

# pragma comment( lib, "rpcrt4.lib")

# pragma comment( lib, "version.lib")

# pragma comment( lib, "crypt32.lib")

# pragma comment( lib, "secur32.lib")

# pragma comment(lib, "apr-1.lib")

# pragma comment(lib, "apriconv-1.lib")

# pragma comment(lib, "aprutil-1.lib")

# pragma comment(lib, "xml.lib")

# pragma comment(lib, "libsvn_client-1.lib")

# pragma comment(lib, "libsvn_delta-1.lib")

# pragma comment(lib, "libsvn_diff-1.lib")

# pragma comment(lib, "libsvn_fs-1.lib")

# pragma comment(lib, "libsvn_fs_fs-1.lib")

# pragma comment(lib, "libsvn_fs_util-1.lib")

# pragma comment(lib, "libsvn_fs_x-1.lib")

# pragma comment(lib, "libsvn_ra-1.lib")

# pragma comment(lib, "libsvn_ra_local-1.lib")

# pragma comment(lib, "libsvn_ra_serf-1.lib")

# pragma comment(lib, "libsvn_ra_svn-1.lib")

# pragma comment(lib, "libsvn_repos-1.lib")

# pragma comment(lib, "libsvn_subr-1.lib")

# pragma comment(lib, "libsvn_test-1.lib")

# pragma comment(lib, "libsvn_wc-1.lib")

# pragma comment(lib, "libsvncxxhl-1.lib")

# pragma comment(lib, "libeay32.lib")

# pragma comment(lib, "ssleay32.lib")

# pragma comment(lib, "zlib.lib")

# pragma comment(lib, "serf-1.lib")


주의

url은 utf8 및 svn_uri_canonicalize 써서 사용해야 함. (안그러면 abort() 발생)

path는 utf8 및 svn_path_internal_style 로 사용해야함.

svn은 일단 무조건 utf8임.