fltk/README.win32

200 lines
8.2 KiB
Plaintext

README.win32 - How to compile for Windows
-----------------------------------------
Fltk has been reported to compile with GNU GCC compilers, with
MicroSoft Visual C++ version 4 and 5, and with Borland's C++ compiler
(sorry no info on that here).
----------------------------------------------------------------
Using GNU C compilers (MingW32 and/or Cygnus):
----------------------------------------------------------------
Edited from mail from Carl Thompson:
MINGW32 and Cygnus are both ports of the GNU compiler to win32. The
difference is that Cygnus will emulate a complete Unix development
environment including nearly all of the standard Unix system calls. This
allows Unix programs to be ported to win32 possibly without changing a
single line of source code. However, the applications it generates are big,
very slow, depend on the Cygnus DLL, and currently somewhat unstable. For
straight Windows applications / Libraries like FLTK that do not require Unix
system call emulation, MINGW32 is the superior choice. MINGW32 produces a
plain Windows binary that is only dependent on the normal Windows DLLs.
Some links for getting MINGW32:
http://agnes.dida.physik.uni-essen.de/~janjaap/mingw32/download.html
http://www.cygnus.com/misc/gnu-win32/index.html
ftp://objectcentral.com/mingw32
You will of course need GNU make for MINGW32 in addition to the regular
MINGW32 utilities. You also need the OpenGL header files which
apparently are not always included with mingw32, get them from the
above ftp site.
More instructions from Rick Sayre (at Pixar):
BTW, for what it's worth, here's the list of changes I have to make to get
fltk and the examples to build under MINGW32 (which I've switched to from
CYGWIN, since programs compiled under it use standard DLL's rather than the
extremely bugging cygwin.dll, and it just otherwise seems to work better):
Run ./configure
-
In makeinclude - change the CFLAGS and CXXFLAGS to add "-O2 -DWIN32"
change the libraries to "-lgdi32 -luser32" (add "-mwindows" to not get
a console)
-
In config.h - set HAVE_SCANDIR to 0. ./configure seems to do this
correctly now, but it was occasionally in the past setting it to 1
-
in src/Makefile:
change the "ar" command to use the "ar -M < ar.script" form. This
is needed only because I compile under Cygwin's B19 bash, which blows up in
all sorts of bad ways (hard resets[!]) on long command lines. More details
if you care, but most people might not. Just a warning.
-
in test/demo.menu
Change the paths to DOS form [blech!], don't use "&"
[A better idea would be to replace system() with a call that knows how
to fake a fork on Winblows]
-
in fluid/Makefile
Change the make install rules to reference "fluid.exe" for installing and
strip'ing, rather than "fluid"
I suspect that it is very likely not a good idea to try "make install" under
Windows. Instead, copy "libfltk.a" to "C:\MINGW32\LIB" (replace
"C:\MINGW32" with the directory in which you installed MINGW32). Then copy
the entire "FL" directory to "C:\MINGW32\INCLUDE".
From Gustavo Hime:
First, thank you for the nice piece of software, and congratulations
on the quality source code. Fltk compiles (and runs) beautifully on
all the systems I use (Irix 6.4,Solaris 2.5, RedHat Linux 5.0): the
exception was Windows, where compilation was rather hard.
I have just now managed to compile (satisfactorily) fltk on Win95
using Mingw32: I do not have MSVC (I don't believe in Microsoft
compilers :)), and we (the project I am engaged in) are going to use
mingw32 to port unix code to windows anyway, so mingw32 was the way to
go. Here is a list of what I had to do:
Modify ar -mwindows to ar -ruv in your makeinclude.mingw32.
Added -DCYGNUS to your *FLAGS variables (I am new to mingw32, I don't
know what it defines to id itself, but they are so close I don't think
it matters much).
Disable GL overlay in win32/config.h (shouldn't this be the default?).
Added dummy makedepend files to directories fluid and src.
Created empty lib directory.
Fixed scroll.C line 83 (implicit typecast from int to const char * in
function call, mingw32 has a problem with this)
Did not fix list_visuals.C (weird code there, where is the main
functionfor win32?)
And finally, the hardest: downloaded the OpenGL headers for mingw32
fromftp://objectcentral.com/mingw32. These are not included in the
mingw32 distribution, and it took me a couple of hours to find them on
the net. It would be nice to add a note about this in the fltk
documentation, and I'll send an e-mail asking them to add these
headers to the mingw32 distribution.
Once again, great code. With mingw32, fltk and opengl, I can
imediatellyport all my old windows code to unix, and I no longer need
to waste 300+ mb of hard-drive on stupid borland compilers.
----------------------------------------------------------------
Using MSVC++:
----------------------------------------------------------------
If you have MSVC++ 5.0, double click the "fltk.dsw". Make the "fltk"
project current, and build it. This will create the library in
../lib/fltkd.lib. To build the demo programs, select the "demo"
project and build it. To run the demos run the demo project.
I only have Pentium and Alpha NT machines running MSVC++ 5.0. Other
users have reported success compiling fltk on Windowe95, and using
version 4 of MSVC++, Borland's C++ compiler, and various ports of GCC
to windows (to use these, look at the "makeinclude" files in
../makefiles).
If you want to make non-console apps you have to do something special,
and that differs on each compiler/linker package. For MSVC++ the
secret switch is:
/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
For cygwin/mingw32 and perhaps some other compilers based on gcc put
this in the makeinclude file:
LDLIBS =-lgdi32 -luser32 -mwindows
There are no makefiles, for MSVC++ or any other compiler, because I
don't know how to write them (the ones dumped by MSVC++ are useless
and unreadable).
----------------------------------------------------------------
Other compilers:
----------------------------------------------------------------
I have heard that Borland C++ is usable.
You probably need to start with the Unix Makefiles. There is one in
../src, one in ../fluid, and one in ../test. Edit these as necessary
and compile. You must add "-DWIN32" to your compiler switches.
The biggest problem seems to be differences in the windows.h header
files (MicroSoft copyrighted theirs?). Some functions and macros have
different names or are missing.
The MSVC++ "makefiles" are totally useless. Ignore that crap.
Start with the Unix makefiles, which list all the necessary source
files. Don't try to compile the files ending in _win32.C, they are
#included by other files if WIN32 is defined.
When compiling the symbol WIN32 must be defined (most compilers do
this?) and you have to set the include path so the file win32/config.h
is seen when the code does #include <config.h>. You may need to use
some sort of switch to force the compiler to compile the files with
C++ rather than C. On MSVC++ this is the obvious acronym "/TP" :-)
Not doing these steps will result in lots of cryptic errors.
----------------------------------------------------------------
Known problems and ToDo list:
----------------------------------------------------------------
It does not work if you turn on full optimizations in VC++. I have
been told this is due to bugs in VC++, but if anybody can find a way
around them it would be nice... (the "optimize" settings in the
project files only do partial optimization and work ok).
If program is deactivated, Fl::wait() does not return until it is
activated again, even though things happen, like redraws. This could
break some programs that rely on executing code after Fl::wait().
Fl_Gl_Window::can_do_overlay() returns true until the first time it
attempts to draw an overlay, and then correctly returns whether or not
there is overlay hardware.
Cut text contains ^J rather than ^M^J to break lines. This is a
feature, not a bug.
Fl_Window::fullscreen() not implemented (should take over the screen
without a title bar). Currently does maximize instead.
Reports of clipping problems on '95. Can't reproduce on NT.
Need to import .bmp files into fluid. Wonko has the specs.
Can't set icon of windows.
Transparent parts of pixmaps do not really work.