wxWindows Library and CS 2704 Code
Preface
This code is, probably, of interest only to Virginia Tech students taking
CS 2704 who prefer to develop their applications in FreeBSD. It is provided
with no warrantee, expressed or implied, of fitness for any purpose.
WxWindows is covered by the GPL license, which says I have to make the
source available. You can't download it from here, but you can write me
a letter asking for it. Beware: wxWindows source is around 4MB.
Installation instructions
These instructions are for FreeBSD only. The systems I tested are FreeBSD
2.2.6 and 2.2.7. I did not test it on other versions of FreeBSD.
Installing on your home computer
-
If you are the fortunate Motif owner, skip to the next step. Otherwise,
install Lesstif from the FreeBSD packages collection. I have tested the
versions 0.83 and 0.85 of Lesstif.
-
Fetch the wxWindows package wx-1.68.tgz. Login
as root and run pkg_add wx-1.68.tgz. This should install the minimal
version of the wxWindows library and documentation. (If you ever want to
remove it, run pkg_delete wx-1.68.)
-
Fetch the cs2704 archive cs2704.tar.gz. This
is not a package, do not try to pkg_add it. The archive contains
the cs2704/ directory. Unpack it somewhere. I suggest you put it in your
home directory.
-
Edit cs2704/Makefile.generic. CS2704DIR must be the absolute name
of the cs2704/ directory.
-
Get GNU make (gmake) from the FreeBSD packages collection. The default
FreeBSD make won't make the sources.
-
Change to the cs2704/ directory and type make to build the sources.
Take a bottle of beer - compilation will take a while. Then run the samples
in the bin/ subdirectories to see if they work. You will probably want
to type make clean_samples later to clean space.
-
Voila! Everything should be set up now.
Installing in the lab
Note that you must ask lab administrator before installing any software.
Libraries alone take 8MB of space. Libraries and samples take 40MB. An
average program takes 2MB. You may want to type quota to see how
much space you have.
-
Fetch the wxWindows archive wx-pack.tar.gz.
This archive contains Lesstif-0.85 and wxWindows-1.68 header files, libraries,
and documentation. Unpack it in your home directory. The wx/ subdirectory
will be created.
-
Fetch the cs2704 archive cs2704.tar.gz. This
archive contains Dr. Kafura's code. Unpack it in your home directory. The
cs2704/ subdirectory will be created.
-
Edit cs2704/Makefile.generic. CS2704DIR must be the absolute name
of the cs2704/ directory.
-
Edit cs2704/make.env. WXDIR must be the absolute name of the wx/
directory.
-
If you are using sh, ksh, or bash, add the following line to ~/.profile:
LD_LIBRARY_PATH=$HOME/wx/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH.
If you are using csh, add the following line to ~/.cshrc: setenv LD_LIBRARY_PATH
$HOME/wx/lib. This line instructs the dynamic linker to look for shared
libraries in the ~/wx/lib directory. Logout and login again in order for
this option to take effect.
-
Change to the cs2704/ directory and type make to build the sources.
Relax in the chair, but don't smoke because smoking is prohibited in the
lab. Check if the examples work. Then type make clean_samples
to clean space. If you're low on space, type make libs to make
libraries only.
-
Congratulate yourself with the victory.
Using the libraries
Using wxWindows is pretty straight-forward. Add $(WXDIR)/include/wx/base
and $(WXDIR)/include/wx/x to your include path, add $(WXDIR)/lib to your
library search path, and link with libwx_motif, libXm, and other libraries.
A good example of these settings is cs2704/make.env. Also, see the wxWindows
documentation installed in $(WXDIR)/share/doc/wx. Hint: set DEBUGFLAGS=-g
in cs2704/make.env to generate debug information.
Cs2704 code comes in four sets of files corresponding to the textbook
chapters. These sets should not be mixed with each other. The src/ subdirectory
of each chapter contains the sources that are combined in the library lib/libcs2704ch<n>
or lib/libcs2704ch<n>s<m>. The samples/ subdirectory contains the
sources for the samples. All binaries are built in bin/. The objects/ subdirectory
is for *.o files, the include/ subdirectory is for headers, and the doc/
subdirectory contains the documentation in HTML. I suggest you use usr/
for your projects.
The easiest way to start your project is to start from one of the samples.
For example, cd to cs2704/Chapter2, mkdir usr/, and copy Sample1.cpp, Base.cpp,
Sample1.inc, and Makefile from samples/ to usr/. Modify these files as
appropriate. They are reasonably comented, so modification should be easy
enough. If you do not like my source tree policies, do not use my Makefiles.
Makefiles accept the following targets:
-
all builds
everything in current directory and below.
-
libs builds
libraries only. This option is available only from the root Makefile.
-
clean cleans all
objects, libraries, and binaries in current directory and below.
-
clean_obj cleans all objects in current
directory and below.
-
clean_samples cleans all samples. This option is available only
from the root Makefile.
-
Other targets are not of general interest.
Troubleshooting
-
Make sure you are using GNU make (gmake).
-
If the code doesn't compile, edit cs2704/make.env. All system-specific
settings are there.
-
If some header files are reported missing, try adding -I$(WXDIR)/include
and your specific include directories to XINCLUDE in cs2704/make.env.
-
If you press File-Quit in the Frame window (not in the startup window)
the program will likely core dump. The same behavior was observed under
BC++/win32. I tend to think this is the bug in Dr. Kafura's code.
-
Dr. Kafura's code has memory leaks. Keep that in mind when doing dynamic
memory allocation. You may want to link with a garbage collector (there
is one by Boehm in FreeBSD packages collection), or patch his code, or
use raw wxWindows.
Good Luck! You need it... ;-)
- Alex Verstak
averstak@vt.edu
Last updated: Sept 6, 1998