못할짓..
* 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임.
'C++' 카테고리의 다른 글
[펌] Debugging Tips (4) - Call Stack 추적하기 (StackWalk) (0) | 2017.04.24 |
---|---|
[펌] 서버 클라이언트 구분이 없는 UDP 소켓 프로그래밍 (0) | 2017.04.20 |
기초적인 IOCP 서버 개발 팁. 연결에서 종료까지... (0) | 2017.03.27 |
LFH (Low Fragmentation Heap), TBB alloc (0) | 2016.08.08 |
boost 컴파일 (0) | 2016.01.22 |
스택 사용량 계산 (0) | 2015.03.25 |
nssm curl 사용하여 주시적으로 웹페이지 호출하는 서비스 만들기 (0) | 2014.07.03 |
mongodb client driver 컴파일 (0) | 2014.05.15 |