1998-09-03 13:58:56 +00:00
|
|
|
* The most simple case
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
If you compile wxWindows on Unix for the first time and don't like
|
|
|
|
to read install instructions just do (in the base dir):
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
./configure --without-threads
|
1998-09-03 13:58:56 +00:00
|
|
|
make
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
and drink 10 coffees. Then you may log in as root and type
|
1998-09-03 13:58:56 +00:00
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
make install
|
|
|
|
|
|
|
|
You can leave out the --without-threads option if you have a NEW
|
|
|
|
Linux distribution based on glibc (e.g. RedHat 5.1) or any other
|
|
|
|
Unix that comes with Posix threads or SGI threads.
|
|
|
|
|
|
|
|
Now create your super-application myfoo.app and compile anywhere with
|
|
|
|
|
1998-09-05 13:59:23 +00:00
|
|
|
g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
* General
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
The Unix variants of wxWindows use GNU configure. If you have problems
|
|
|
|
with your make use GNU make instead.
|
|
|
|
|
|
|
|
Read my homepage at
|
|
|
|
|
|
|
|
http://wesley.informatik.uni-freiburg.de/~wxxt
|
|
|
|
|
|
|
|
for newest information.
|
|
|
|
|
|
|
|
* GUI libraries
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
wxWindows requires a GUI toolkit to be installed. Does that make
|
|
|
|
sense? So far only the GTK is supported, but we hope to provide
|
|
|
|
the choice between GTK, Qt, Motif/Lesstif in the not so distant
|
|
|
|
future.
|
|
|
|
|
|
|
|
You can get the newest version of the GTK from the GTK homepage
|
|
|
|
at
|
|
|
|
http://www.gtk.org
|
|
|
|
|
|
|
|
The newest versin of Qt can be downloaded for free from the Trolltec's
|
|
|
|
site at
|
|
|
|
http://www.troll.no
|
|
|
|
|
|
|
|
Lesstif can be downloaded from their site
|
|
|
|
at
|
|
|
|
http://www.lesstif.org
|
|
|
|
|
|
|
|
If you want to develop using Motif, you need to buy it, unless it comes
|
|
|
|
with your operating system such as all commercial Unices, as well as
|
|
|
|
RedHat's, SuSe's and probably other's Linux Motif editions.
|
|
|
|
|
|
|
|
* Additional libraries
|
|
|
|
-----------------------
|
|
|
|
|
|
|
|
There will be a few more features of wxWindows, which will
|
|
|
|
require further libraries (on some platforms). These
|
|
|
|
features will be optional. I hope to teach configure
|
|
|
|
to check that out automatically.
|
|
|
|
|
|
|
|
Thread support:
|
|
|
|
|
|
|
|
Requires pthreads under Linux with glibc 2. pthreads are
|
|
|
|
always present on such systems, so just compile, unless
|
|
|
|
you have RedHat 5.0, which has a broken combination of
|
|
|
|
glibc 2 and X. In this case, you have to run configure
|
|
|
|
with "--without-threads".
|
|
|
|
|
|
|
|
Requires PCthreads under Linux with libc 5. If you
|
|
|
|
haven't installed pcthreads, there will be no thread
|
|
|
|
support in wxWindows, but the library will compile.
|
|
|
|
|
|
|
|
Requires Posix threads on commercial Unix system,
|
|
|
|
which are always present. Just compile.
|
|
|
|
|
|
|
|
On SGI Irix we first look for sprocs, then pthreads and
|
|
|
|
use the last one found.
|
|
|
|
|
|
|
|
Python scripting language support:
|
|
|
|
|
|
|
|
Requires Python. Soon to come.
|
|
|
|
|
|
|
|
* Other things to do
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
wxGTK and wxMotif/wxLesstif require the built-in
|
|
|
|
ImLib/GdkImlib to be configured. For that purpose
|
|
|
|
copy the two files from /misc/imlib to your
|
|
|
|
home directory and rename "imrc" -> ".imrc".
|
|
|
|
You may also edit imrc by hand as you like.
|
|
|
|
The palette file is required when using
|
|
|
|
wxWindows in 256-colour mode.
|
|
|
|
|
|
|
|
If you want to use wxWindows's ODBC support, you'll have
|
|
|
|
to create a .odbc.ini file. The readme file in
|
|
|
|
~/src/iodbc tells you what to do.
|
|
|
|
|
|
|
|
|
|
|
|
* Create your configuration
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
./configure options
|
|
|
|
|
|
|
|
If you want to use system's C and C++ compiler,
|
|
|
|
set environment variables CC and CCC as
|
|
|
|
|
|
|
|
% setenv CC cc
|
|
|
|
% setenv CCC CC
|
|
|
|
% ./configure options
|
|
|
|
|
|
|
|
Using the SGI native compilers, it is recommended that you
|
|
|
|
also set CFLAGS and CXXFLAGS before running configure. These
|
|
|
|
should be set to :
|
|
|
|
|
|
|
|
CFLAGS="-mips3 -n32"
|
|
|
|
CXXFLAGS="-mips3 -n32"
|
|
|
|
|
|
|
|
This is essential if you want to use the resultant binaries
|
|
|
|
on any other machine than the one it was compiled on. If you
|
|
|
|
have a 64bit machine (Octane) you should also do this to ensure
|
|
|
|
you don't accidently build the libraries as 64bit (which is
|
|
|
|
untested).
|
|
|
|
|
|
|
|
The SGI native compiler support has only been tested on Irix 6.5.
|
|
|
|
|
|
|
|
to see all the options please use:
|
|
|
|
|
|
|
|
./configure --help
|
|
|
|
|
|
|
|
The basic philosophy is that if you want to use different
|
|
|
|
configurations, like a debug and a release version,
|
|
|
|
or use the same source tree on different systems,
|
|
|
|
you have only to change the environment variable OSTYPE.
|
|
|
|
(Sadly this variable is not set by default on some systems
|
|
|
|
in some shells - on SGI's for example). So you will have to
|
|
|
|
set it there. This variable HAS to be set before starting
|
|
|
|
configure, so that it knows which system it tries to
|
|
|
|
configure for.
|
|
|
|
|
|
|
|
Configure will complain if the system variable OSTYPE has
|
|
|
|
not been defined. And Make in some circumstances as well...
|
|
|
|
|
|
|
|
|
|
|
|
* General options
|
|
|
|
-------------------
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
Normally, you won't have to choose a toolkit, because when
|
|
|
|
you download wxGTK, it will default to --with-gtk etc. But
|
|
|
|
if you use all of our CVS repository you have to choose a
|
|
|
|
toolkit. You must do this by running configure with either of:
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
--with-gtk Use the GIMP ToolKit (GTK)
|
|
|
|
|
|
|
|
--with-qt Use Qt from TrollTec
|
|
|
|
|
|
|
|
--with-motif Use either Motif or Lesstif
|
|
|
|
Configure will look for both.
|
|
|
|
|
|
|
|
The following options handle the kind of library you want to build.
|
|
|
|
|
|
|
|
--without-threads Compile without thread support.
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
--without-shared Do not create shared libraries.
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
--without-optimise Do not optimise the code.
|
|
|
|
|
|
|
|
--with-profile Add profiling info to the object
|
|
|
|
files. Currently broken, I think.
|
|
|
|
|
|
|
|
--with-mem_tracing Add built-in memory tracing.
|
|
|
|
This doesn't work well with gcc.
|
|
|
|
|
|
|
|
--with-dmalloc Use the dmalloc memory debugger.
|
|
|
|
Read more at www.letters.com/dmalloc/
|
|
|
|
|
|
|
|
--with-debug_info Add debug info to object files and
|
|
|
|
executables.
|
|
|
|
|
|
|
|
--with-debug_flag Define __DEBUG__ and __WXDEBUG__ when
|
|
|
|
compiling.
|
|
|
|
|
|
|
|
* Feature Options
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
As I don't yet care for binary size and target mainly at
|
|
|
|
producing a shared library, wxWindows's configure system auto-
|
|
|
|
matically enables all features, as long as they are already
|
1998-09-08 18:21:16 +00:00
|
|
|
implemented. It is currently NOT possible to disable these
|
|
|
|
options (in contrast to what configure tells you).
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
* Compiling
|
|
|
|
-------------
|
|
|
|
|
|
|
|
The following must be done in the base directory (e.g. ~/wxGTK
|
1998-09-03 21:46:47 +00:00
|
|
|
or ~/wxWin or whatever)
|
1998-09-03 13:58:56 +00:00
|
|
|
|
1998-09-08 18:21:16 +00:00
|
|
|
Now the makefiles are created and you can compile everything
|
|
|
|
by typing:
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
make
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
make yourself some coffee, as it will try to compile ALL the
|
1998-09-08 18:21:16 +00:00
|
|
|
files in this distribution. During compilation, you'll get
|
|
|
|
a few warning messages.
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
if you want to be more selective:
|
|
|
|
|
|
|
|
make src will build only the base libraries
|
|
|
|
make utils will build the utils
|
|
|
|
make samples will build the samples
|
|
|
|
make other will build the other samples
|
|
|
|
make user will build the files in the directory other
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
Then you may install the library and it's header files under
|
|
|
|
/usr/local/include/wx and /usr/local/lib respectively. You
|
|
|
|
have to log in as root (i.e. run "su" and enter the root
|
|
|
|
password) and type
|
|
|
|
|
|
|
|
make install
|
|
|
|
|
1998-09-03 13:58:56 +00:00
|
|
|
Depending on the configuration of some files, the libraries
|
|
|
|
and binaries will be placed in different directories.
|
|
|
|
The "global" binaries and libraries will be placed in:
|
|
|
|
|
|
|
|
bin/$(OSTYPE) and
|
|
|
|
lib/$(OSTYPE) respectively
|
|
|
|
|
|
|
|
"local" binaries and libraries will be placed in:
|
|
|
|
|
|
|
|
(basedir of that application)/$(OSTYPE).
|
|
|
|
|
|
|
|
This is also the place where all the object-files will go.
|
|
|
|
|
|
|
|
If you want to conserve disk space by removing unnecessary
|
|
|
|
object-files:
|
|
|
|
|
|
|
|
make clean_obj
|
|
|
|
|
|
|
|
will do the work for you.
|
|
|
|
|
|
|
|
* Creating a new Project
|
|
|
|
--------------------------
|
|
|
|
|
1998-09-05 13:59:23 +00:00
|
|
|
There are two ways to create your own project:
|
|
|
|
|
|
|
|
1) The first way uses the installed libraries and header files
|
|
|
|
automatically using wx-config
|
|
|
|
|
|
|
|
g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo
|
|
|
|
|
|
|
|
Using this way, a make file for the minimal sample would look
|
|
|
|
like this
|
|
|
|
|
|
|
|
CC = g++
|
|
|
|
|
|
|
|
minimal: minimal.o
|
|
|
|
$(CC) -o minimal minimal.o `wx-config --libs`
|
|
|
|
|
|
|
|
minimal.o: minimal.cpp mondrian.xpm
|
|
|
|
$(CC) `wx-config --cflags` -c minimal.cpp -o minimal.o
|
|
|
|
|
|
|
|
clean:
|
|
|
|
rm -f *.o minimal
|
|
|
|
|
|
|
|
This is certain to become the standard way unless we decide
|
|
|
|
to sitch to tmake.
|
|
|
|
|
|
|
|
2) The other way creates a project within the source code
|
|
|
|
directories of wxWindows: In this case I propose to put
|
|
|
|
all contributed programs in the directory "/user", with a
|
|
|
|
directory of its own.
|
1998-09-03 13:58:56 +00:00
|
|
|
|
|
|
|
This directory then should include the following files:
|
|
|
|
|
|
|
|
Makefile (You can copy this one from any application in samples
|
|
|
|
probably you will not need to edit this one. There is
|
|
|
|
only one case where you might be interested in changing
|
|
|
|
this file, but about that see later.)
|
|
|
|
Makefile.in (This is the base application-Makefile template, from
|
|
|
|
which the actual Makefile for each system is created.
|
|
|
|
More about this later)
|
|
|
|
|
|
|
|
put ALL your source code along with all the other stuff you need for
|
|
|
|
your application in this directory (subdirectories are welcome).
|
|
|
|
|
1998-09-03 21:46:47 +00:00
|
|
|
|
1998-09-03 13:58:56 +00:00
|
|
|
** Something about Makefiles
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
On general principle it should only contain ONE line, which is as follows:
|
|
|
|
|
|
|
|
include ../../setup/general/makeapp
|
|
|
|
|
|
|
|
this will include all the necessary definitions for creating the applications
|
|
|
|
|
|
|
|
the only case where you might want to add another line is the following:
|
|
|
|
this version of configure also supports creation of source archives of the
|
|
|
|
application for easy distribution and updates to newer version of wxWindows.
|
|
|
|
For this purpose all files in the application-directory will be put into
|
|
|
|
a gziped tar-file in the full notation user/<your application>/*
|
|
|
|
if you want to include some other files that you want "more visible", like
|
|
|
|
a README.<yourApp> or a shell script for easy
|
|
|
|
compilation/installation/distribution, then you have to add a variable
|
|
|
|
|
|
|
|
DISTRIBUTE_ADDITIONAL=<your files>
|
|
|
|
|
|
|
|
to the Makefile.
|
|
|
|
So it would look like this:
|
|
|
|
|
|
|
|
DISTRIBUTE_ADDITIONAL=README.TheApp
|
|
|
|
include ../../setup/general/makeapp
|
|
|
|
|
|
|
|
As we have already talked about distribution the command to create a
|
|
|
|
distribution is:
|
|
|
|
|
|
|
|
make distrib
|
|
|
|
|
|
|
|
NOTE: If you are in the base directory of wxWindows it will create
|
|
|
|
distribution packages for wxWindows as well as for all packages in the
|
|
|
|
user directory.
|
|
|
|
So if you want to create only packages for the files in user,
|
|
|
|
then go to the directory other and type:
|
|
|
|
|
|
|
|
make distrib
|
|
|
|
|
|
|
|
or if you only want one application to be created then
|
|
|
|
enter the specific directory and type there:
|
|
|
|
make distrib
|
|
|
|
|
|
|
|
All the distribution files will be put in the directory
|
|
|
|
distrib at the base of the wxWindows-tree (where also configure
|
|
|
|
and template.mak can be found).
|
|
|
|
|
|
|
|
** Something about Makefile.in
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
As you have already seen with Makefile, configure makes a lot of use
|
|
|
|
if the include statement in make to keep the Makefiles as simple as
|
|
|
|
possible.
|
|
|
|
|
|
|
|
So basically there are only variables to define and then a include command.
|
|
|
|
Exception to this rule is if you have special rules for some stuff...
|
|
|
|
These rules should go AFTER the include statement!!!
|
|
|
|
|
|
|
|
so the general header looks like this:
|
|
|
|
|
|
|
|
# wxWindows base directory
|
|
|
|
WXBASEDIR=@WXBASEDIR@
|
|
|
|
# set the OS type for compilation
|
|
|
|
OS=@OS@
|
|
|
|
# compile a library only
|
|
|
|
RULE=bin
|
|
|
|
|
|
|
|
and the general footer will look like this:
|
|
|
|
|
|
|
|
# include the definitions now
|
|
|
|
include ../../../template.mak
|
|
|
|
|
|
|
|
the key variable is RULE, which defines what make should create
|
|
|
|
in this directory.
|
|
|
|
|
|
|
|
here are some examples:
|
|
|
|
|
|
|
|
RULE description
|
|
|
|
===========================================================================
|
|
|
|
bin creates a local binary (for a global binary prefix bin with g)
|
|
|
|
additional variables needed:
|
|
|
|
BIN_TARGET this gives the name of your application
|
|
|
|
BIN_OBJ this gives the object files needed to
|
|
|
|
link the application
|
|
|
|
optional variables are:
|
|
|
|
BIN_SRC this gives the list of c/c++ files for
|
|
|
|
which dependencies will be checked.
|
|
|
|
(This can be achieved with: make depend)
|
|
|
|
BIN_LINK this gives commands for additional
|
|
|
|
libraries needed to link the application
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
bin2 creates two local binaries (for global binaries prefix bin2 with g)
|
|
|
|
in addition to the variables specified above you MUST also
|
|
|
|
provide the same variables with BIN2_ instead of BIN_
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
lib creates a local library (for a global binary prefix bin with g)
|
|
|
|
additional variables needed:
|
|
|
|
LIB_TARGET this gives the name of your library
|
|
|
|
LIB_OBJ this gives the object files needed for
|
|
|
|
the library to be build.
|
|
|
|
optional variables are:
|
|
|
|
LIB_SRC this gives the list of c/c++ files for
|
|
|
|
which dependencies will be checked.
|
|
|
|
libbin and libgbin are also possible and will need in addition
|
|
|
|
the variables from bin
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
gslib is similar to lib, but it creates a shared library if the system
|
|
|
|
supports it.
|
|
|
|
additional variables needed:
|
|
|
|
LIB_MAJOR major number of the shared library
|
|
|
|
LIB_MINOR minor number of the shared library
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
other additional variables:
|
|
|
|
|
|
|
|
ADD_COMPILE define additional includes/defines that
|
|
|
|
are needed to compile the object files
|
|
|
|
(if you need to reference some directory
|
|
|
|
utils - like wxGrid -, then please
|
|
|
|
reference them with the variables defined
|
|
|
|
in template.mak - e.g.: $(SRCDIR),$(UTILS),
|
|
|
|
$(SAMPLES),$(OTHERS))
|
|
|
|
|
|
|
|
NEEDED_DEFINES lists all the defines that HAVE to be set in
|
|
|
|
/include/wx/setup.h to compile correctly.
|
|
|
|
|
|
|
|
SRC_DIR lists all directories that are needed to
|
|
|
|
compile. (i.e: lists all the directories,
|
|
|
|
where there are source-files.) But it is
|
|
|
|
also needed to clean an object and for
|
|
|
|
machines, for which make does not support
|
|
|
|
VPATH
|
|
|
|
|
|
|
|
currently there are the following compiling rules provided:
|
|
|
|
object files are created for the following file extensions:
|
|
|
|
.c .cc .cpp
|
|
|
|
|
|
|
|
Please have a closer look at the Makefiles in this distribution.
|
|
|
|
|
|
|
|
* Platforms configure is working with
|
|
|
|
---------------------------------------
|
|
|
|
|
|
|
|
Please report build succes on any machine. Especially non-
|
|
|
|
Linux operating systems (which I don't have).
|
|
|
|
|
|
|
|
Original author of the autoconf system for wxxt-1.66 and for this INSTALL
|
|
|
|
file:
|
|
|
|
|
|
|
|
Martin Sperl sperl@dsn.ast.univie.ac.at
|
|
|
|
|
|
|
|
Ported to wxGTK 0.1:
|
|
|
|
|
|
|
|
Wolfram Gloger wmglo@dent.med.uni-muenchen.de
|
|
|
|
|
|
|
|
Thanks alot to both of them.
|
|
|
|
|
|
|
|
In the hope that it will be useful,
|
|
|
|
|
|
|
|
Robert Roebling roebling@sun2.ruf.uni-freiburg.de
|
|
|
|
|
|
|
|
|