mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 07:20:44 -04:00
184 lines
5.3 KiB
ReStructuredText
184 lines
5.3 KiB
ReStructuredText
Notes on setting up the windows development environment
|
|
========================================================
|
|
|
|
Set CMAKE_PREFIX_PATH to C:\cygwin\home\kovid\sw
|
|
|
|
jpeg-7
|
|
-------
|
|
|
|
Copy
|
|
jconfig.vc to jconfig.h, makejsln.vc9 to jpeg.sln,
|
|
makeasln.vc9 to apps.sln, makejvcp.vc9 to jpeg.vcproj,
|
|
makecvcp.vc9 to cjpeg.vcproj, makedvcp.vc9 to djpeg.vcproj,
|
|
maketvcp.vc9 to jpegtran.vcproj, makervcp.vc9 to rdjpgcom.vcproj, and
|
|
makewvcp.vc9 to wrjpgcom.vcproj. (Note that the renaming is critical!)
|
|
|
|
Load jpeg.sln in Visual Studio
|
|
|
|
Goto Project->Properties->General Properties and change Configuration Type to dll
|
|
|
|
Add
|
|
|
|
#define USE_WINDOWS_MESSAGEBOX
|
|
|
|
to jconfig.h (this will cause error messages to show up in a box)
|
|
|
|
Change the definitions of GLOBAL and EXTERN in jmorecfg.h to
|
|
#define GLOBAL(type) __declspec(dllexport) type
|
|
#define EXTERN(type) extern __declspec(dllexport) type
|
|
|
|
cp build/jpeg-7/Release/jpeg.dll bin/
|
|
cp build/jpeg-7/Release/jpeg.lib build/jpeg-7/Release/jpeg.exp
|
|
cp build/jpeg-7/jerror.h build/jpeg-7/jpeglib.h build/jpeg-7/jconfig.h build/jpeg-7/jmorecfg.h include/
|
|
|
|
zlib
|
|
------
|
|
|
|
nmake -f win32/Makefile.msc
|
|
nmake -f win32/Makefile.msc test
|
|
|
|
cp zlib1.dll* ../../bin
|
|
cp zlib.lib zdll.* ../../lib
|
|
cp zconf.h zlib.h ../../include
|
|
|
|
|
|
libpng
|
|
---------
|
|
|
|
cp scripts/CMakelists.txt .
|
|
mkdir build
|
|
Run cmake-gui.exe with source directory . and build directory build
|
|
You will have to point to sw/lib/zdll.lib and sw/include for zlib
|
|
Also disable PNG_NO_STDIO and PNG_NO_CONSOLE_IO
|
|
|
|
Now open PNG.sln in VS2008
|
|
Set Build type to Release
|
|
|
|
cp build/libpng-1.2.40/build/Release/libpng12.dll bin/
|
|
cp build/libpng-1.2.40/build/Release/png12.* lib/
|
|
cp build/libpng-1.2.40/png.h build/libpng-1.2.40/pngconf.h include/
|
|
|
|
freetype
|
|
-----------
|
|
|
|
Edit *all copies* of the file ftoption.h and add to generate a .lib
|
|
and a correct dll
|
|
|
|
#define FT_EXPORT(return_type) __declspec(dllexport) return_type
|
|
#define FT_EXPORT_DEF(return_type) __declspec(dllexport) return_type
|
|
|
|
|
|
VS 2008 .sln file is present, open it
|
|
|
|
Change active build type to release mutithreaded
|
|
|
|
Project->Properties->Configuration Properties
|
|
change configuration type to dll
|
|
|
|
cp build/freetype-2.3.9/objs/release_mt/freetype.dll bin/
|
|
|
|
Now change configuration back to static for .lib
|
|
cp build/freetype-2.3.9/objs/win32/vc2008/freetype239MT.lib lib/
|
|
cp -rf build/freetype-2.3.9/include/* include/
|
|
|
|
expat
|
|
--------
|
|
|
|
Has a VC 6 project file expat.dsw
|
|
|
|
Set active build to Relase and change build type to dll
|
|
|
|
cp build/expat-2.0.1/win32/bin/Release/*.lib lib/
|
|
cp build/expat-2.0.1/win32/bin/Release/*.exp lib/
|
|
cp build/expat-2.0.1/win32/bin/Release/*.dll bin/
|
|
cp build/expat-2.0.1/lib/expat.h build/expat-2.0.1/lib/expat_external.h include/
|
|
|
|
libxml2
|
|
-------------
|
|
|
|
cd win32
|
|
cscript configure.js include=C:\cygwin\home\kovid\sw\include lib=C:\cygwin\home\sw\lib prefix=C:\cygwin\home\kovid\sw zlib=yes iconv=no
|
|
nmake /f Makefile.msvc
|
|
nmake /f Makefile.msvc install
|
|
mv lib/libxml2.dll bin/
|
|
cp ./build/libxml2-2.7.5/win32/bin.msvc/*.manifest bin/
|
|
|
|
kdewin32-msvc
|
|
----------------
|
|
|
|
Get it from http://www.winkde.org/pub/kde/ports/win32/repository/kdesupport/
|
|
mkdir build
|
|
Run cmake
|
|
|
|
Set build type to release and configuration to dll
|
|
|
|
Build
|
|
|
|
cp build/kdewin32-msvc-0.3.9/build/include/* include/
|
|
cp build/kdewin32-msvc-0.3.9/build/bin/Release/*.dll bin/
|
|
cp build/kdewin32-msvc-0.3.9/build/bin/Release/*.lib lib/
|
|
cp build/kdewin32-msvc-0.3.9/build/bin/Release/*.exp lib/
|
|
cp -r build/kdewin32-msvc-0.3.9/include/msvc/ include/
|
|
cp build/kdewin32-msvc-0.3.9/include/*.h include/
|
|
|
|
fontconfig
|
|
---------------
|
|
|
|
Get it from http://www.winkde.org/pub/kde/ports/win32/repository/win32libs/
|
|
mkdir build
|
|
Remove subdirectory test from the bottom of CMakeLists.txt
|
|
run cmake
|
|
|
|
Set build type to release and project config to dll
|
|
Right click on the fontconfig project and select properties. Add sw/include/msvc to the include paths
|
|
Build only fontconfig
|
|
|
|
cp build/fontconfig-msvc-2.4.2-3/build/src/Release/*.dll bin
|
|
cp build/fontconfig-msvc-2.4.2-3/build/src/Release/*.lib lib
|
|
cp build/fontconfig-msvc-2.4.2-3/build/src/Release/*.exp lib
|
|
cp -r build/fontconfig-msvc-2.4.2-3/fontconfig/ include/
|
|
|
|
Also install the etc files from the font-config-bin archive from kde win32libs
|
|
It contains correct fonts.conf etc.
|
|
|
|
|
|
poppler
|
|
-------------
|
|
|
|
In Cmake: disable GTK, Qt, OPenjpeg, zlib, lcms, gtk_tests, qt_tests. Enable qt4, jpeg, png and zlib
|
|
|
|
NOTE: poppler must be built as a static library, unless you build the qt4 bindings
|
|
|
|
Now do the same for the pdftohtml project
|
|
|
|
cp poppler/*.h ~/sw/include/poppler && cp goo/*.h ~/sw/include/poppler/goo && cp splash/*.h ~/sw/include/poppler/splash && cp build/Release/poppler.lib ../../lib/ && cp build/utils/Release/*.exe ../../bin/
|
|
|
|
|
|
podofo
|
|
----------
|
|
|
|
Add the following three lines near the top of CMakeLists.txt
|
|
SET(WANT_LIB64 FALSE)
|
|
SET(PODOFO_BUILD_SHARED TRUE)
|
|
SET(PODOFO_BUILD_STATIC FALSE)
|
|
|
|
cp build/podofo-0.7.0/build/src/Release/podofo.dll bin/
|
|
cp build/podofo-0.7.0/build/src/Release/podofo.lib lib/
|
|
cp build/podofo-0.7.0/build/src/Release/podofo.exp lib/
|
|
|
|
ImageMagick
|
|
--------------
|
|
|
|
Edit VisualMagick/configure/configure.cpp to set
|
|
|
|
int projectType = MULTITHREADEDDLL;
|
|
|
|
Run configure.bat ina visual studio command prompt
|
|
|
|
Edit magick/magick-config.h
|
|
|
|
Undefine ProvideDllMain and MAGICKCORE_X11_DELEGATE
|
|
|
|
Now open VisualMagick/VisualDynamicMT.sln set to Release
|
|
Remove the CORE_xlib project
|