2002-10-04 06:30:34 +04:00
|
|
|
README.win32 - 10/03/2002 - Building FLTK under Windows
|
2000-06-20 09:47:38 +04:00
|
|
|
-------------------------------------------------------
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
INTRODUCTION
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
This document is split into two main sections. The first
|
|
|
|
describes several possible build environments, while the
|
|
|
|
second describes some of the issues associated with using
|
|
|
|
the GNU-like build configurations in the "makefiles"
|
|
|
|
subdirectory.
|
|
|
|
|
|
|
|
FLTK currently supports the following development
|
|
|
|
environments on the Windows platform:
|
|
|
|
|
|
|
|
- Microsoft Visual C++ 6.0 using the supplied workspace
|
|
|
|
and project files. Be sure to get your service packs!
|
|
|
|
|
|
|
|
- Borland C++ Builder 5 using the supplied IDE file.
|
|
|
|
|
|
|
|
- GNU toolsets (Cygwin or MinGW) hosted on Windows
|
|
|
|
9x/2000/NT/XP.
|
|
|
|
|
|
|
|
This document gives a brief overview of compiling and using
|
|
|
|
FLTK with the Cygwin and MinGW compiler toolkits. Both
|
|
|
|
toolkits provide a build environment based around the GNU
|
|
|
|
C/C++ compiler.
|
|
|
|
|
|
|
|
The Cygwin build environment supplies a library (the Cygwin
|
|
|
|
DLL) that is primarily intended to provide a number of
|
|
|
|
Unix-like POSIX facilities for programs being ported to the
|
|
|
|
Windows environment (Win32 or WinNT). Cygwin also supplies
|
|
|
|
a very Unix-like build environment for Windows, including
|
|
|
|
the "BASH" Bourne-compatible shell and all of the standard
|
|
|
|
Unix file utilities (ls, cat, grep, etc.).
|
|
|
|
|
|
|
|
Cygwin is developed by Cygnus (now part of RedHat, Inc).
|
|
|
|
Although provided for free download under the GPL,
|
|
|
|
distributing programs that require the Cygwin DLL under a
|
|
|
|
license other than the GPL requires a commercial license for
|
|
|
|
the Cygwin DLL. Native Windows programs that do not require
|
|
|
|
the Cygwin DLL (compiled and linked with the "-mno-cygwin"
|
|
|
|
option) may be released under any license freely.
|
|
|
|
|
|
|
|
The MinGW distribution (Minimalist GNU for Windows) provides
|
|
|
|
a similar toolset but geared solely towards native Windows
|
|
|
|
development without the Unix-like POSIX library. The lack
|
|
|
|
of any libraries under the GPL or any other restrictive
|
|
|
|
license means that programs built with the MinGW environment
|
|
|
|
may always be released under any license freely.
|
|
|
|
|
|
|
|
If you are not familiar with these GNU-like toolkits please
|
|
|
|
refer to the links section later in this section. In
|
|
|
|
particular, check out their license conditions carefully
|
|
|
|
before use.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
THE TOOLS
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
There are currently three main configurations supported by
|
|
|
|
FLTK:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
1. Cygwin: Built using the Cygwin toolset and using the
|
|
|
|
Unix-like POSIX compatibility layer provided by the
|
|
|
|
Cygwin DLL.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
2. Cygwin using the "-mno-cygwin" option: Built using
|
|
|
|
the Cygwin toolset but not using the Cygwin DLL.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
3. MinGW: Mainly based upon the MinGW utilities,
|
|
|
|
compiler and tools but currently needs additional
|
|
|
|
tools from the Cygwin distribution (make.exe and
|
|
|
|
sh.exe).
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
RECOMMENDED BUILD ENVIRONMENTS
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Our recommendation is to:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
1. Get the current Cygwin toolset (June 20, 2000 or
|
|
|
|
later).
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Can produce executables that do or do not rely on the
|
|
|
|
Cygwin DLL (check licensing)-- your choice. No
|
|
|
|
supplementary MinGW files are required.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
2. Get the latest full MinGW toolset and add Cygwin
|
|
|
|
"make.exe" and "sh.exe" to it.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Will only normal Windows native executables without
|
|
|
|
any Unix or POSIX compatibility.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
3. Get a pre-built combined toolset that has been tested
|
|
|
|
with FLTK.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Carl Thompson has provided a set based upon the B20.1
|
|
|
|
Cygwin release and ~Feb 2000 version of Mingw which
|
|
|
|
has been successfully used for FLTK.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
This will provide several Cygwin utilities and the
|
|
|
|
MinGW compiler. Compilation will produce executables
|
|
|
|
not reliant on the Cygwin DLL and so are freely
|
|
|
|
redistributable under any license you choose.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
See the links section below for more information.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
All three options can provide windows-native executables and
|
|
|
|
1 can provide a Unix-like POSIX portability layer that is
|
|
|
|
reliant on a GPLed library.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
See the later sections for detailed information about using
|
|
|
|
one of these configurations.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
LINKS
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The following links may be of use:
|
2000-06-20 09:47:38 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
1. Main Cygwin homepage:
|
2000-06-20 22:47:33 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://sourceware.cygnus.com/cygwin/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
2. Main Mingw homepage:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.mingw.org/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
In particular look for the MinGW FAQ at this link for
|
|
|
|
a lot of useful Mingw-native development
|
|
|
|
documentation.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
3. Mumit Khan's homepage (chief maintainer and driving
|
|
|
|
force behing MinGW):
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/index.html
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
This page provides descriptions of Cygwin, Mingw and
|
|
|
|
several other similar packages. This information can
|
|
|
|
sometimes lag the current release however.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
In particular the insights and recommendations for
|
|
|
|
using Cygwin for MinGW compilation are very useful:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
(Some of this information may be outdated and inaccurate!)
|
2000-06-20 22:47:33 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
4. Check out the FLTK newsgroups at the FLTK homepage:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.fltk.org/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Its archival search facilities are EXTREMELY useful
|
|
|
|
to check back through previous problems with this
|
|
|
|
sort of configuration before posting new questions.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
5. Carl Thompson (member of the core team responsible
|
|
|
|
for FLTK):
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.carlthompson.net/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Currently a pre-bundled development toolset may be
|
|
|
|
found at:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.carlthompson.net/cygwin/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
6. GNU Compiler Collection (GCC) compiler homepage:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://gcc.gnu.org/
|
2000-06-20 09:47:38 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
7. OpenGL page - for OpenGL and GLUT libs
|
2000-06-20 09:47:38 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.opengl.org/
|
2000-06-20 09:47:38 +04:00
|
|
|
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
BUILDING FLTK WITH CYGWIN OR MINGW
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Please read chapter 1 of the FLTK Programmers Manual for
|
|
|
|
compilation instructions.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
WHY DOES A CONSOLE WINDOW APPEAR WHEN I RUN MY PROGRAM
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Windows has a flag that determines whether an application
|
|
|
|
runs in the foreground with a console or in the background
|
|
|
|
without a console. Use the "-mwindows" option to make your
|
|
|
|
application run in the background and "-mconsole" to run in
|
|
|
|
the foreground.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Keep in mind that a windows application cannot send output
|
|
|
|
to stdout, even if you run it from an existing console
|
|
|
|
application.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
HOW DO I GET OPENGL TO WORK?
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The CygWin build automatically supports OpenGL.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The MingW build disables OpenGL by default, since the
|
|
|
|
standard MingW distribution lacks the OpenGL header files.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The configuration file config.h has a number of settings
|
|
|
|
which control compile-time compilation. One such setting is
|
|
|
|
"HAVE_GL" . By default this is set to 0 to disable Open GL
|
|
|
|
operation. Changing the line in config.h to
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
#define HAVE_GL 1
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
will change this to compile and link in OpenGL.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
In order for it to work you will need a few OpenGL headers
|
|
|
|
for both Cygwin and MinGW. These are not part of the
|
|
|
|
official distributions of Cygwin or MinGW, so they need to
|
|
|
|
be added. The following page provides a ZIP file containing
|
|
|
|
the OpenGL headers:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.carlthompson.net/fltk/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
These should be put in a "GL" subdirectory somewhere in your
|
|
|
|
compiler's search path.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
You will also need an OpenGL library and an additional set
|
|
|
|
of GLUT libraries.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The OpenGL files are most likely already part of your
|
|
|
|
operating system, and the GLUT libraries are in current
|
|
|
|
versions of MinGW and Cygwin or may be found at:
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
http://www.opengl.org/
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Do a search for 'GLUT windows' and the first couple of
|
|
|
|
results will take you to the latest GLUT and OpenGL libs for
|
|
|
|
Windows.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
The binaries (DLLs normally) need to be put somewhere on the
|
|
|
|
system PATH. Consult the install documentation on the site
|
|
|
|
for info.
|
2000-06-14 00:33:36 +04:00
|
|
|
|
2002-01-01 18:11:33 +03:00
|
|
|
Many programs use OpenGL and GLUT so you may already have
|
|
|
|
them on your system.
|