1998-10-20 20:41:24 +04:00
|
|
|
README.win32 - How to compile for Windows
|
|
|
|
-----------------------------------------
|
1998-10-06 22:21:25 +04:00
|
|
|
|
|
|
|
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.
|