30f1b5f3ef
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2017 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
452 lines
14 KiB
Plaintext
452 lines
14 KiB
Plaintext
* 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):
|
|
|
|
./configure
|
|
make
|
|
make install
|
|
|
|
* The most simple errors
|
|
------------------------
|
|
|
|
configure reports, that you don't have GTK 1.0.X installed
|
|
although you are certainly sure you have. Well, you have
|
|
installed it, but you also have another version of the
|
|
GTK installed, which you may need to removed including
|
|
other versions of glib (and its headers).
|
|
|
|
You get errors during compilation. The reason is that you
|
|
probably have a broken compiler, which includes almost
|
|
everything that is called gcc. If there is just any way
|
|
for you to use egcs, use egcs. We are sorry, but we cannot
|
|
fix gcc for the moment.
|
|
|
|
* The most simple program
|
|
-------------------------
|
|
|
|
Now create your super-application myfoo.app and compile anywhere
|
|
with
|
|
|
|
g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo
|
|
|
|
* General
|
|
-----------------------
|
|
|
|
The Unix variants of wxWindows use GNU configure. If you have
|
|
problems with your make use GNU make instead.
|
|
|
|
If you have general problems with installation, read my
|
|
homepage at
|
|
|
|
http://wesley.informatik.uni-freiburg.de/~wxxt
|
|
|
|
for newest information. If you still don't have any success,
|
|
please send a bug report to one of our mailing lists (see
|
|
my homepage) INCLUDING A DESCRIPTION OF YOUR SYSTEM AND
|
|
YOUR PROBLEM, SUCH AS YOUR VERSION OF GTK, WXGTK, WHAT
|
|
DISTRIBUTION YOU USE AND WHAT ERROR WAS REPORTED. I know
|
|
this has no effect, but I tried...
|
|
|
|
* GUI libraries
|
|
-----------------------
|
|
|
|
wxWindows/GTK requires the GTK+ library to be installed on your system.
|
|
It has to be a stable version, preferebly version 1.0.6. When using
|
|
a version previous to 1.0.6 you'll might get crashes here and there.
|
|
|
|
wxWindows/GTK does NOT work with the 1.1.X versions of the GTK+ library
|
|
and we will wait until the 1.2 version comes out and has stabilized
|
|
until we'll work with that library.
|
|
|
|
You can get the newest version of the GTK+ from the GTK homepage
|
|
at
|
|
http://www.gtk.org
|
|
|
|
We also mirror GTK+ 1.0.6 at my ftp site. You'll find information
|
|
about downloading at my homepage.
|
|
|
|
* Additional libraries
|
|
-----------------------
|
|
|
|
wxWindows/Gtk requires a thread library and X libraries
|
|
known to work with threads. This is the case on all
|
|
commercial Unix-Variants and all Linux-Versions that
|
|
are based on glibc 2 except RedHat 5.0 which is broken
|
|
in many aspects. As of writing this, these Linux
|
|
distributions have correct glibc 2 support:
|
|
|
|
- RedHat 5.1
|
|
- Debian 2.0
|
|
- Stampede
|
|
- DLD 6.0
|
|
- SuSE 6.0
|
|
|
|
On IRIX you can also use SGI threads if Posix-Threads
|
|
are not present. The SGI threads will be detected by
|
|
configure automatically.
|
|
|
|
You can enable thread support by running
|
|
|
|
./configure "--with-threads"
|
|
make clean
|
|
make
|
|
make install
|
|
|
|
NB: I included thread support in wxWindows/Gtk, as this
|
|
problem will disappear in the near future when all major
|
|
Linux Variants have moved to glibc 2. Also, the Linux
|
|
Base Standard will include glibc 2 and Posix threads.
|
|
|
|
NB: DO NOT COMPILE WXGTK WITH GCC AND THREADS, SINCE
|
|
ALL PROGRAMS WILL CRASH UPON START-UP. Just always
|
|
use egcs and be happy.
|
|
|
|
* 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
|
|
-------------------
|
|
|
|
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:
|
|
|
|
--with-gtk Use the GIMP ToolKit (GTK)
|
|
|
|
--with-motif Use either Motif or Lesstif
|
|
Configure will look for both.
|
|
|
|
The following options handle the kind of library you want to build.
|
|
|
|
--with-threads Compile with thread support.
|
|
|
|
--without-shared Do not create shared libraries.
|
|
|
|
--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.
|
|
|
|
--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
|
|
implemented. It is currently NOT possible to disable these
|
|
options (in contrast to what configure tells you).
|
|
|
|
* Compiling
|
|
-------------
|
|
|
|
The following must be done in the base directory (e.g. ~/wxGTK
|
|
or ~/wxWin or whatever)
|
|
|
|
Now the makefiles are created (by configure) and you can compile
|
|
the library by typing:
|
|
|
|
make
|
|
|
|
make yourself some coffee, as it will take some time. On an old
|
|
386SX possibly week. During compilation, you'll get a few
|
|
warning messages.
|
|
|
|
if you want to be more selective:
|
|
|
|
make src will build only the base libraries
|
|
make samples will build the samples
|
|
make other will build everything in other
|
|
make user will build everything in user
|
|
|
|
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
|
|
|
|
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.
|
|
(Currently there arent any global binaries).
|
|
|
|
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
|
|
--------------------------
|
|
|
|
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.
|
|
|
|
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).
|
|
|
|
|
|
** 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
|
|
|
|
|