make install
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
420
docs/gtk/install.txt
Normal file
420
docs/gtk/install.txt
Normal file
@@ -0,0 +1,420 @@
|
||||
* 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 --with-gtk --with-shared --without-threads
|
||||
make
|
||||
|
||||
and drink 10 coffees.
|
||||
|
||||
|
||||
* 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
|
||||
-------------------
|
||||
|
||||
Obviously, you have to choose a toolkit. You must do this by
|
||||
running configure with either of
|
||||
|
||||
--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.
|
||||
|
||||
--with-shared 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.
|
||||
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
|
||||
-------------------
|
||||
|
||||
When using the Windows version of wxWindows, it is possible
|
||||
to edit the file /include/wx/msw/setup.h in order to enable
|
||||
or disable some features of wxWindows so that the resulting
|
||||
binaries get smaller.
|
||||
|
||||
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.
|
||||
|
||||
* Compiling
|
||||
-------------
|
||||
|
||||
The following must be done in the base directory (e.g. ~/wxGTK
|
||||
or ~/wxWin)
|
||||
|
||||
First you have to create all makefiles in all subdirectories:
|
||||
|
||||
make Makefiles
|
||||
|
||||
Dependencies are generated automatically using
|
||||
|
||||
make depend
|
||||
|
||||
(For some reason, this doesn't seem to work completely.)
|
||||
|
||||
Now the makefiles are created you can compile everything is as simple
|
||||
as typing:
|
||||
|
||||
make
|
||||
|
||||
make yourself some coffee, as it will try to compile
|
||||
ALL the files in this distribution.
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
--------------------------
|
||||
|
||||
I propose to put all contributed programs in the directory
|
||||
"~/wxWin/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
|
||||
|
||||
|
Reference in New Issue
Block a user