mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-16 09:37:08 +00:00
3444a5a52a
git-svn-id: svn+q:///qpdf/trunk@795 71b93d88-0707-0410-a8cf-f5a4172ac649
125 lines
5.0 KiB
Plaintext
125 lines
5.0 KiB
Plaintext
Common Setup
|
|
============
|
|
|
|
To be able to run qpdf's test suite, you must have cygwin installed.
|
|
This is because qpdf's test suite uses qtest, which requires cygwin
|
|
perl on Windows. (Hopefully a future version of qtest will work with
|
|
ActiveState Perl.) You must have at least perl and gnu diffutils
|
|
installed to run the test suite.
|
|
|
|
As of this writing, the image comparison tests confuse ghostscript in
|
|
cygwin, but there's a chance they might work at some point. If you
|
|
want to run them, you need ghostscript and tiff utils as well. Then
|
|
omit --disable-test-compare-images from the configure statements given
|
|
below.
|
|
|
|
Building with MinGW
|
|
===================
|
|
|
|
QPDF is known to build and pass its test suite with MSYS-1.0.11 and
|
|
gcc 4.4.0 with C++ support. You can fully configure and build qpdf in
|
|
this environment, though cygwin is required to run the test suite.
|
|
You will most likely not be able to build qpdf with mingw using
|
|
cygwin, though it's possible that it could be made to work with gcc
|
|
-mno-cygwin.
|
|
|
|
From your MSYS prompt, run
|
|
|
|
./configure --disable-test-compare-images --enable-build-external-libs --with-buildrules=mingw
|
|
make
|
|
|
|
When done, you should copy the gcc runtime DLL into the libqpdf/build
|
|
directory. You can find the path to it by running
|
|
|
|
objdump -p qpdf/build/qpdf.exe | grep DLL
|
|
type -P libgcc_s_dw2-1.dll
|
|
|
|
replacing libgcc_s_dw2-1.dll with whatever gcc DLL is shown, if
|
|
different. Redistribution of this DLL is unavoidable as of this
|
|
writing; see "Static Runtime" below for details.
|
|
|
|
From your cygwin prompt, add the absolute path to the libqpdf/build
|
|
directory to your PATH. Make sure you can run the qpdf command by
|
|
typing qpdf/build/qpdf and making sure you get a help message rather
|
|
than an error loading the DLL or no output at all. Run the test suite
|
|
by typing
|
|
|
|
make check GENDEPS=0
|
|
|
|
from your cygwin prompt. The GENDEPS=0 is necessary to prevent the
|
|
build system in cygwin from trying to interpret the MSYS/Windows paths
|
|
embedded in the dependency files. If all goes well, you should get a
|
|
passing test suite.
|
|
|
|
Building with MSVC .NET 2008 Express
|
|
====================================
|
|
|
|
These instructions would likely work with newer version of MSVC or
|
|
with full version of MSVC. They may also work with .NET 2005. They
|
|
have only been tested with .NET 2008 Express.
|
|
|
|
It's possible that the MSVC build may work from MSYS, but since cygwin
|
|
is needed to run the test suite, these have only been tested from
|
|
cygwin.
|
|
|
|
You should first set up your environment to be able to run MSVC from
|
|
the command line. There is usually a batch file included with MSVC
|
|
that does this. From that cmd prompt, you can start your cygwin
|
|
shell.
|
|
|
|
Configure as follows:
|
|
|
|
CC=cl CXX="cl /TP /GR" CPPFLAGS=-DHAVE_VSNPRINTF ./configure --disable-test-compare-images --enable-build-external-libs --with-buildrules=msvc
|
|
make
|
|
|
|
The -DHAVE_VSNPRINTF is really only required for things that include
|
|
zutil.h from zlib. You don't have to worry about this when compiling
|
|
against qpdf with MSVC -- only when building zlib. It's harmless to
|
|
include with the rest of the qpdf build.
|
|
|
|
Once built, add the full path to the libqpdf/build directory to your
|
|
path and run
|
|
|
|
make check
|
|
|
|
to run the test suite.
|
|
|
|
If you are building with MSVC and want to debug a crash in MSVC's
|
|
debugger, first start an instance of Visual C++. Then run qpdf. When
|
|
the abort/retry/ignore dialog pops up, first attach the process from
|
|
within visual C++, and then click Retry in qpdf.
|
|
|
|
A release version of qpdf is built by default. You will probably have
|
|
to edit msvc.mk to change /MD to /MDd to build a debugging version.
|
|
Note that you must redistribute the Microsoft runtime DLLs. Linking
|
|
with static runtime won't work; see "Static Runtime" below for
|
|
details.
|
|
|
|
Installing
|
|
==========
|
|
|
|
As of this writing, make install doesn't work with Windows since it is
|
|
hard-coded to use libtool. Until that time, you can install manually
|
|
by looking at the install target in Makefile and gathering up the
|
|
appropriate pieces by hand. If building with mingw, be sure to run
|
|
strip on the DLL and EXE files to make them much smaller. This is not
|
|
necessary with msvc since it stores debugging information in a
|
|
separate file. Note that, in both cases, compiling with debugging
|
|
flags adds extra data to the symbol table and not to the resulting
|
|
executables. (Compiling with debugging flags, with msvc, is distinct
|
|
from directing the compiler to use debugging runtime libraries, which
|
|
does make a difference.)
|
|
|
|
Static Runtime
|
|
==============
|
|
|
|
Building the DLL and executables with static runtime does not work
|
|
with either Visual C++ .NET 2008 (a.k.a. vc9) using /MT or with mingw
|
|
(at least as of 4.4.0) using -static-libgcc. The reason is that, in
|
|
both cases, there is static data involved with exception handling, and
|
|
when the runtime is linked in statically, exceptions cannot be thrown
|
|
across the DLL to EXE boundary. Since qpdf uses exception handling
|
|
extensively for error handling, we have no choice but to redistribute
|
|
the C++ runtime DLLs. Maybe this will be addressed in a future
|
|
version of the compilers.
|