mirror of https://github.com/CGAL/cgal
401 lines
14 KiB
Plaintext
401 lines
14 KiB
Plaintext
ABSTRACT. This is a short guide to installing and using CGAL with
|
|
Windows compilers using native tools, that is, no extra add-on for the
|
|
development environment, such as Cygwin, is needed. The present
|
|
document concerns mainly the MSVC 6.0 (Visual C++) compiler and
|
|
IDE. Command-line interface for Borland C++ Builder 4 is very similar
|
|
and is briefly described, as well.
|
|
|
|
This document addresses Windows-specific issues of using CGAL. General
|
|
questions of CGAL programming are considered in the CGAL Manual.
|
|
|
|
|
|
CONTENTS.
|
|
|
|
1.Introduction
|
|
|
|
2.Initial customization
|
|
|
|
3.Building the library, examples and demos
|
|
|
|
4.Developing for CGAL with MSVC
|
|
Customizing MSVC IDE
|
|
|
|
5. GNU MP support
|
|
|
|
Appendix. Using Borland C++ Builder 4 with CGAL.
|
|
|
|
|
|
1. Introduction
|
|
|
|
1.1. What is supported.
|
|
|
|
The present CGAL release provides a basic support for MSVC 6.0
|
|
compiler. It can also be considered an early beta release for Inprise
|
|
Borland C++ Builder 4. Using the latter with CGAL is briefly described
|
|
in the Appendix.
|
|
|
|
Interfaces to arbitrary precision arithmetic packages (GNU MP and
|
|
the corresponding part of LEDA) are supported. A precompiled GNU MP
|
|
librarry is included in the distribution.
|
|
|
|
A 2D visualization via LEDA Window is supported.
|
|
|
|
|
|
1.2. What is not (yet) supported.
|
|
|
|
MSVC 5.0 is not supported. Also, Intel's ICL compiler, known as a
|
|
"drop-in replacement for VC++" is not supported, although we might
|
|
decide to support it at some point.
|
|
|
|
Interface to CLN does not work for MSVC, as CLN cannot be compiled
|
|
into an MSVC compatible library.
|
|
|
|
There is no 3D visualization supported on Windows at the moment. Such
|
|
a support will be provided via forthcoming LEDA features. Also, the
|
|
openGL-based CGAL viewer that interfaces via FLTK library is being
|
|
developed.
|
|
|
|
|
|
1.3. What is needed.
|
|
|
|
In order to use CGAL with MSVC, you need MSVC command line tools
|
|
installed and working. Certain familiarity with using Windows command
|
|
prompt and these tools is assumed. A reasonable amount of system
|
|
resources, that is enough memory to run large compilations (64 Mb on
|
|
NT4.0) and about 15MB of disk space, is required.
|
|
|
|
It is highly recommended that you have a recent (at least 4.0) version
|
|
of LEDA installed. Most of the CGAL demos would not work without LEDA.
|
|
|
|
|
|
1.1. Getting CGAL
|
|
|
|
The easiest way to download CGAL is via the CGAL homepage:
|
|
http://www.cs.uu.nl/CGAL/
|
|
and go to the `Software' section.
|
|
Follow the instructions on this page to obtain your copy of the
|
|
library.
|
|
|
|
In the near future we plan to make an automated (by means of
|
|
InstallShield or a similar tool) installation available.
|
|
Currently, one should proceed as follows.
|
|
|
|
Download the file called CGAL-2.1.zip and decompress it into a
|
|
suitable directory. For the latter, either your web browser is able
|
|
to interact with a decompression program like WinZip
|
|
(see http://www.winzip.com), or you can save
|
|
the zip-file onto the disk and decompress it using unzip.exe program
|
|
that can be downloaded, for instance, from
|
|
http://www.itribe.net/virtunix/
|
|
|
|
Do *not* use directory names that have spaces in them for the
|
|
installation path.
|
|
A subdirectory called CGAL-2.1 will be created.
|
|
The full path to it is referred as CGALROOT in the sequel.
|
|
CGALROOT contains the following subdirectories:
|
|
|
|
|
|
directory contents
|
|
|
|
auxiliary packages that can optionally be used with CGAL
|
|
in particular, GMP
|
|
config configuration files for install script
|
|
demo demo programs (some of them need LEDA, geomview,
|
|
OpenGL or other third-party products)
|
|
doc_html documentation (HTML)
|
|
doc_pdf documentation (PDF)
|
|
doc_ps documentation (Postscript)
|
|
examples example programs
|
|
include header files
|
|
lib object libraries
|
|
make files with platform dependent makefile settings
|
|
stlport STL header files used with MSVC
|
|
src CGAL library source files
|
|
winutils configuration files and utilities for Windows installation
|
|
|
|
|
|
CGAL has interfaces to a number of rather important 3rd party
|
|
packages, that provide, in particular, arbitrary precision arithmetic,
|
|
and visualization. On Windows these packages are LEDA and GNU MP (also
|
|
known as GMP). GMP is supported by default; see Sect. 5 for details.
|
|
LEDA configuration is described below.
|
|
|
|
|
|
2. Initial customization.
|
|
|
|
Open a Command Prompt (on Win9* it is called MS-DOS Prompt) window.
|
|
(do not try using a Cygwin bash window. If you like to use Cygwin, then
|
|
use the usual bash script install_cgal instead. See the "generic"
|
|
Installation manual.)
|
|
Change to CGALROOT and run the batch file cgal_config.bat at the
|
|
prompt. This script will set the appropriate makefiles for
|
|
subsequent compilation.
|
|
|
|
cgal_config.bat accepts 4 parameters.
|
|
|
|
1. the compiler type (msc (or msvc))
|
|
|
|
2. (optional) compiler options (to enable debugging and/or threads
|
|
support)
|
|
|
|
3. (optional) LEDAROOT (the location where LEDA lib files are installed)
|
|
|
|
4. (optional) the location where LEDA header files are installed.
|
|
If omitted, it is assumed to be LEDAROOT\incl.
|
|
|
|
Typically, assuming that LEDA is installed in
|
|
k:\LEDA-4.1-991117, they would look as follows:
|
|
|
|
one would run at the command prompt:
|
|
|
|
K:\cgal\> cgal_config msc k:\LEDA-4.1-991117
|
|
|
|
Otherwise, if LEDA header files are not in LEDAROOT\incl, one would run, say,
|
|
|
|
K:\cgal\> cgal_config msc k:\LEDA-4.1-991117\msvc k:\LEDA-4.1-991117\incl
|
|
|
|
It is assumed that 3. (LEDAROOT) and 4. do not have names with spaces.
|
|
|
|
Running cgal_config.bat without parameters prints out the detailed
|
|
options list (in particular, for 2. above).
|
|
|
|
|
|
3. Building the library, examples and demos
|
|
|
|
Change to CGALROOT and run make_lib.bat at the command prompt. Namely,
|
|
|
|
K:\cgal\> make_lib
|
|
|
|
builds the library with the compiler/options specified in 2.
|
|
For other settings, one would have to reconfigure (see 2.) and recompile
|
|
(same as for LEDA).
|
|
|
|
K:\cgal\> make_examples
|
|
|
|
compiles and links the examples and
|
|
|
|
K:\cgal\> make_demos
|
|
|
|
compiles and links the demos.
|
|
|
|
Note that the amount of disk usage for the executables and temporary
|
|
files can be considerable, up to several hundereds megabytes for all
|
|
the executable, object and debug files.
|
|
|
|
Examples and demos can also be built on per directory, or even on per
|
|
executable basis. Each examples/ and demo/ subdirectory contains a
|
|
file makefile.mak that is an MSVC nmake makefile. For instance,
|
|
change to CGALROOT\demo\Point_set_2 and type "nmake -f makefile.mak
|
|
all" to build all the examples. Typing "nmake -f makefile.mak
|
|
ps_test1" will build the particular demo ps_test1.
|
|
|
|
The corresponding executable(s) then can be run as usual, from the
|
|
command prompt, or via Explorer.
|
|
|
|
Note that demos requiring LEDA would not work if CGAL was configured
|
|
without LEDA support.
|
|
|
|
|
|
LEDA be compiled and used with LEDA_STD_HEADERS flag on. CGAL uses
|
|
new-style C++ standard conformant headers (the ones that do not have
|
|
.h- suffix), while LEDA can work with both styles. Mixing these styles
|
|
is a strict no-no for MSVC. Before compiling LEDA, edit the file
|
|
LEDAROOT\incl\LEDA\system.h and set #define LEDA_STD_HEADERS there.
|
|
|
|
|
|
4. Developing for CGAL with MSVC
|
|
|
|
Here we give some hints on the use of CGAL with native MSVC tools; C++
|
|
language issues/troubleshooting and the use of CGAL with Cygwin are
|
|
covered in the generic Installation manual.
|
|
|
|
The most important issue is the following. CGAL uses C++ STL
|
|
(Standard Template Library) quite extensively. To resolve many C++
|
|
Standard compliance problems of the native MSVC STL, we chose to use a
|
|
drop-in replacement for it, STLPort (see http://www.stlport.org). We
|
|
have customized STLPort, version 3.2.1, to partially support
|
|
std::iterator_traits template of STL.
|
|
|
|
For this to work, the compiler should have STLPort subdirectory first
|
|
in its search path. This issue is taken care of in the makefiles
|
|
generated. Customization of IDE is described in Sect 4.2 below.
|
|
|
|
|
|
4.1. Using nmake makefiles.
|
|
|
|
Simply adapt a makefile.mak from an examples/ or demos/ subdirectory.
|
|
This means changing the target "all" and changing the targets that
|
|
create executables (look in the subsection "target entries" there).
|
|
For instance, you would like to create an executable demo_beta.exe
|
|
from a C++ source file demo_beta.C. Then your makefile, that would
|
|
include the "main" makefile makefile.mak in CGALROOT would have
|
|
|
|
all: demo_beta
|
|
|
|
demo_beta: demo_beta.obj
|
|
$(CGAL_CXX) $(LIBPATH) $(EXE_OPT)demo_beta demo_beta.obj \
|
|
$(LDFLAGS)
|
|
|
|
and a "suffix rule" that describes creation of an object file from a
|
|
.C - file, e.g.
|
|
|
|
.C.obj:
|
|
$(CGAL_CXX) $(CXXFLAGS) $(OBJ_OPT) $<
|
|
|
|
Extra compiler and linker options are to be specified by changing
|
|
macros CXXFLAGS and LDFLAGS, respectively.
|
|
|
|
One way to specify the "main" makefile is by using environment
|
|
variable CGAL_MAKEFILE to specify the full path to makefile.mak in
|
|
CGALROOT.
|
|
|
|
Probably such a makefile can also be used for "custom build" via an
|
|
IDE, although we never attempted this ourselves.
|
|
|
|
|
|
4.2. Using MSVC IDE
|
|
|
|
The compiler/linker options used to build the CGAL library should
|
|
match those used for the project. This can be done by
|
|
selecting "Project/Settings...", the "C/C++" section,
|
|
"Code Generation" category, and choosing the right
|
|
library in "Use run-time library:"
|
|
|
|
Single-Threaded ml (or no option)
|
|
Multi-threaded mt
|
|
Multi-threaded DLL md
|
|
Debug Single-Threaded mld
|
|
Debug Multi-threaded mtd
|
|
Debug Multi-threaded DLL mdd
|
|
|
|
Further necessary customization is as follows.
|
|
We hope that the forthcoming automatic installation will simplify
|
|
these elaborated procedures.
|
|
|
|
4.2.1. Customizing compilation.
|
|
|
|
Additional include directories (in the right order!) and preprocessor
|
|
definitions have to be specified. We assume that either CGAL_ROOT is
|
|
an (already defined) environment variable (and then the include and
|
|
library paths can be entered as shown), or $(CGAL_ROOT) must be
|
|
replaced by the corresponding full path to the CGAL installation.
|
|
|
|
Select "Project/Settings...", the "C/C++"
|
|
section, "Preprocessor" category. Add (in the following order)
|
|
|
|
$(CGAL_ROOT)\stlport
|
|
$(CGAL_ROOT)\include\CGAL\config\msvc
|
|
$(CGAL_ROOT)\include
|
|
$(CGAL_ROOT)\include
|
|
$(CGAL_ROOT)\auxiliary\wingmp\gmp-2.0.2
|
|
|
|
to "Additional include directories:".
|
|
It is very important that $(CGAL_ROOT)\stlport appears first
|
|
in the list in "Additional include directories:"; otherwise a bunch
|
|
of ugly compiler error messages is guaranteed.
|
|
|
|
If LEDA is used, don't forget to add
|
|
$(LEDAROOT)\incl
|
|
to "Additional include directories:".
|
|
|
|
Add CGAL_USE_GMP to "Preprocessor definitions:".
|
|
If LEDA is used, also add CGAL_USE_LEDA and LEDA_PREFIX there.
|
|
|
|
|
|
Should your source file(s) have non-MSVC-standard suffices,
|
|
(like all the CGAL source files, by the way)
|
|
add /TP to options "Project Settings" in the "C/C++" section,
|
|
"Preprocessor" category.
|
|
|
|
|
|
4.2.2. Customizing linking.
|
|
|
|
Additional library directories have to be specified.
|
|
Select "Project/Settings...", "Link" section, "Input" category. Add
|
|
CGAL.lib
|
|
gmp.lib
|
|
in "Object/library modules:" list.
|
|
If LEDA is used, also add there
|
|
libP.lib
|
|
libG.lib
|
|
libL.lib
|
|
|
|
If LEDA Window is used, also add there
|
|
libW.lib
|
|
In addition, make sure that you link against the system libraries
|
|
user32.lib gdi32.lib comdlg32.lib shell32.lib advapi32.lib
|
|
(usually IDE has them already on the list).
|
|
|
|
If LEDA Geowin is used, one should as well add
|
|
libGeoW.lib
|
|
libD3.lib
|
|
to "Object/library modules:.
|
|
|
|
|
|
5. GNU MP support
|
|
|
|
A pre-compiled for MSVC, using Cygwin GNU C compiler and GNU assembler,
|
|
static object library gmp.lib is located in
|
|
CGALROOT\auxiliary\wingmp\gmp-2.0.2\msvc
|
|
and the corresponding header file gmp.h in
|
|
CGALROOT\auxiliary\wingmp\gmp-2.0.2
|
|
|
|
It was created using M.Khan's CYGWIN-specific patches to GNU MP 2.0.2,
|
|
that are available from
|
|
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/ and then
|
|
slightly modified (by adding a few routines, like random, and creating a
|
|
separate MSVC-compiled library that does I/O of the GMP numbers.) It
|
|
was checked that all tests that come with GMP distribution pass. See
|
|
CGALROOT\auxiliary\wingmp\gmp-2.0.2\msvc\src for details.
|
|
|
|
Subject to time constraints, we might provide a smoother GMP support
|
|
for MSVC in the future. A new major release of GMP is expected in
|
|
March 2000, probably CGAL will be upgraded to use it then.
|
|
|
|
-------------------------------------------------------------------
|
|
Appendix. Using Borland C++ Builder 4 with CGAL
|
|
|
|
NB. First, we repeat that the support of BCB4 by CGAL 2.1 is not
|
|
complete. Expect that some demos and examples would not
|
|
compile, and some crash at run-time.
|
|
|
|
Here we describe the differences with MSVC installation described
|
|
above.
|
|
|
|
Initial customization is very similar to the one for MSVC.
|
|
The only difference is the choice of options for the compiler.
|
|
Run
|
|
cgal_config bcc [leda-dirs...]
|
|
or
|
|
cgal_config bcc d [leda-dirs...]
|
|
|
|
for debug version of the library.
|
|
|
|
Building the library, examples and demos using make_lib, make_demo
|
|
and make_examples is the same.
|
|
|
|
Note that the makefiles created are for nmake, an MSVC tool; batchfiles use
|
|
BCB make tool with "-N" compatibility option. We did not try to use
|
|
them without this option.
|
|
That is, instead of "nmake" above one should use "make -N".
|
|
|
|
Customizing BCB IDE should not be hard. The same general procedure of
|
|
customizing compilation and linking applies, with an important
|
|
difference that the platform-specific library paths end on bcc rather
|
|
than on msvc, and that stlport include directory should NOT be added
|
|
at all.
|
|
|
|
GNU MP support for BCB4 is preliminary, and can be considered beta, as
|
|
well. A precompiled static library is located in
|
|
CGALROOT\auxiliary\wingmp\gmp-2.0.2\bcc
|
|
|
|
It is built by configuring GMP to be compiled with BCB, and then
|
|
compiled, with BCB. No assembler routines are used,
|
|
Thus do not expect it to be fast.
|
|
(There are no source code of them in Intel format available.
|
|
GMP uses AT&T assembler format instead. Unfortunately there is no
|
|
assembler available that can generate BCB object format, OMF, from the
|
|
AT&T format source code. Nor a convertor from COFF to OMF
|
|
that works with GAS output is available.)
|
|
|