Задался целью статично собрать все части в один исполняемый файл.. Зачем? .. Сам не знаю, может для того, чтобы не таскать с собой дополнительные .dll-файлы. Конечно это отрицательно сказывается на своевременном апдейте приложения, с каждой новой версией любой из частей нужно будет снова все компилить и собирать.
Zlib:
в сборке ничего сложного не оказалось, все уже включено внутри, для создания статик библиотеки в файле win32/Makefile.msc надо флаг -MD заменить на -MT , далее в консоли надо прописать:
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj"
как результат получаем файлик zlib.lib
OpenSSL:
Для сборки библиотеки потребуется интерпретатор PERL и компилятор NASM, после создания nt.mak, я его подправил, убрал флаги /Zi при компиляции (размер библиотек существенно уменьшился)
ms\do_nasm.bat nmake -f ms\nt.mak
тут мы получим два файла: libeay32.lib и ssleay32.lib
CURL:
тут также все просто:
nmake -f Makefile.vc9 cfg=release-ssl-zlib \ OPENSSL_PATH=..\..\__openssl \ ZLIB_PATH=..\..\__zlib \ WINDOWS_SDK_PATH=c:\SDKv7 \ RTLIBCFG=static
получаем: libcurl.lib
PCRE:
а с этим пришлось немного повозиться, скачиваем вот это, распаковываем в каталог с исходниками, переименовываем config.h.generic и pcre.h.generic в config.h и pcre.h, соответственно, далее:
nmake
получаем: pcre.lib
SQLite:
тут вообще никаких проблем, в своем проект подключаем прилагаемые хедеры и сырец.
итак, все сделано, для того, чтобы наш проект все это в себя включил компилим его примерно так:
cl /nologo /c /O2 /MT /D_MT /EHsc /DCRTAPI1=_cdecl /DCRTAPI2=_cdecl /DWIN32 /D_WIN32 /D_WINNT /D_WIN32_WINNT=0x0500 sqlite3.c cl /nologo /c /O2 /MT /D_MT /EHsc /DCRTAPI1=_cdecl /DCRTAPI2=_cdecl /DWIN32 /D_WIN32 /D_WINNT /D_WIN32_WINNT=0x0500 /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /DUSE_SSLEAY /DCURL_STATICLIB /DPCRE_STATIC наш_сырец.cpp link /nologo /release /subsystem:console /manifest:no наш_сырец.obj sqlite3.obj advapi32.Lib ws2_32.lib wldap32.lib kernel32.lib user32.lib gdi32.lib zlib.lib ssleay32.lib libeay32.lib pcre.lib libcurl.lib
Ну и напоследок, кому лень все это делать — можете взять здесь
Содержит:
zlib-1.2.5 openssl-1.0.0a libpcre-8.10 libcurl-7.21.0