mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-22 22:00:49 +00:00
Update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@12909 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
9583f91bd4
commit
7e971a86db
2 changed files with 385 additions and 428 deletions
|
@ -1,317 +1,41 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@c A FAQ for GNUstep
|
||||
|
||||
@node Top, GNUstep General Information, (dir), (dir)
|
||||
@node Top, Compatibility, (dir), (dir)
|
||||
@chapter GNUstep Frequently Asked Questions with Answers
|
||||
|
||||
Last updated @today{}
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}.
|
||||
Last updated @today{}.
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look
|
||||
at the user FAQ for more user oriented questions.
|
||||
|
||||
@menu
|
||||
* GNUstep General Information::
|
||||
* Compatibility with OPENSTEP/Cocoa/MacOSX::
|
||||
* Compatibility::
|
||||
* Compiling and Developing::
|
||||
* GNU Objective C Compiler and Objective C Runtime Library::
|
||||
* GNU Objective C Compiler and Runtime::
|
||||
* GNUstep Base Library::
|
||||
* GNUstep GUI Library::
|
||||
* GNUstep DisplayGhostScript Server::
|
||||
@end menu
|
||||
|
||||
@node GNUstep General Information, Compatibility with OPENSTEP/Cocoa/MacOSX, Top, Top
|
||||
@section GNUstep General Information
|
||||
|
||||
@menu
|
||||
* What is GNUstep?::
|
||||
* What is the OpenStep standard?::
|
||||
* What platforms does GNUstep run on?::
|
||||
* Does GNUstep run on Windows?::
|
||||
* What is GNUstep's position towards KDE and the GNOME project?::
|
||||
* Is the Objective C API for GTK related?::
|
||||
* How about implementing parts of the Application Kit with GTK?::
|
||||
* Which compiler can I use? Where can I get it?::
|
||||
* Which Foundation Library can I use?::
|
||||
* How do you use the gnustep-make package?::
|
||||
* How can I get GNUstep?::
|
||||
* How do you run GNUstep?::
|
||||
* Is there a web site?::
|
||||
* When is GNUstep intended to be available?::
|
||||
* What is usable?::
|
||||
@end menu
|
||||
|
||||
@node What is GNUstep?, What is the OpenStep standard?, GNUstep General Information, GNUstep General Information
|
||||
@subsection What is GNUstep?
|
||||
|
||||
GNUstep is the Free Software Foundation's effort to implement NeXT
|
||||
Software Inc.'s (now Apple Inc.) OpenStep Standard. The project is not
|
||||
finished, however some components are useable now.
|
||||
|
||||
The GNUstep project consists of the following sub-projects:
|
||||
|
||||
@itemize @bullet
|
||||
|
||||
@item GNU Objective C Compiler and Objective C Runtime Library -
|
||||
Although not actually a component of GNUstep, GCC and the GNU
|
||||
Objective C Runtime Library are integral to GNUstep, since they are used
|
||||
to make every GNU Objective C program.
|
||||
|
||||
@item GNUstep Base Library - Code for non-graphical objects, such as
|
||||
strings, collections, archiving support and distributed objects
|
||||
messaging. (Including functionality similar to OpenStep's
|
||||
@samp{FoundationKit}.)
|
||||
|
||||
@item GNUstep GUI Library - Code for graphical objects used in making a
|
||||
Graphical User Interface (GUI). This includes buttons, sliders, text
|
||||
fields, windows, menus, etc. (Including functionality similar to
|
||||
OpenStep's @samp{AppKit}.)
|
||||
|
||||
@item GNUstep DisplayGhostscript Server - A server that draws PostScript
|
||||
graphics to the screen, and receives events from the keyboard and
|
||||
mouse. It is based on GNU GhostScript. There is also an DPS extension to
|
||||
Xfree*6 that is usable.
|
||||
|
||||
@item Various Tools and applications, including GORM, The GNUstep
|
||||
interface builder for graphically assembling application interfaces, and
|
||||
ProjectCenter, a project manager.
|
||||
|
||||
@end itemize
|
||||
|
||||
@node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information
|
||||
@subsection What is the OpenStep standard?
|
||||
|
||||
OpenStep is an Application Programming Interface (API) for creating
|
||||
applications using the Objective C language. It was published by NeXT
|
||||
Computer Inc. in 1994.
|
||||
|
||||
OpenStep consists of three parts: the @samp{FoundationKit}, a library of
|
||||
non-graphical objects; the @samp{AppKit}, a library of objects usful in
|
||||
creating graphical applications; and @samp{Display Postscript}, an
|
||||
interface for drawing to the screen using the PostScript graphics
|
||||
language.
|
||||
|
||||
You can obtain a copy of the OpenStep standard from the GNUstep web site
|
||||
@url{http://www.gnustep.org} or it's mirror sites.
|
||||
|
||||
@node What platforms does GNUstep run on?, Does GNUstep run on Windows?, What is the OpenStep standard?, GNUstep General Information
|
||||
@subsection What platforms does GNUstep run on?
|
||||
|
||||
See the list of supported platforms at
|
||||
@url{http://www.gnustep.org/information/machines_toc.html} for
|
||||
information on what machines GNUstep builds on and what the status of
|
||||
the ports is. Probably a few days porting to any other Unix system where
|
||||
current gcc/egcs compilers and gdb debugger work.
|
||||
|
||||
@node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information
|
||||
@subsection Does GNUstep run on Windows?
|
||||
|
||||
The primary targets for GNUstep are free 'Unix' platforms such
|
||||
as GNU/Linux.
|
||||
|
||||
That being said, the base library should run on Windows-NT,98 with the
|
||||
Cygwin unix emulation library from Cygnus
|
||||
(http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At
|
||||
present there are a few problems with networking (Distributed Objects)
|
||||
support, but the library is believed to work.
|
||||
|
||||
The gui library needs a win32 backend library to work under
|
||||
Windows-NT. The backend library is a thin layer that converts the
|
||||
GNUstep methods to handle drawing of GUI elements to calls to the
|
||||
win32 api. This is a project looking for a volunteer.
|
||||
|
||||
The application-wrapper used for GNUstep already allows for multiple
|
||||
binaries to be stored for different systems, so you should be able
|
||||
to write once, deploy anywhere.
|
||||
|
||||
|
||||
@node What is GNUstep's position towards KDE and the GNOME project?, Is the Objective C API for GTK related?, Does GNUstep run on Windows?, GNUstep General Information
|
||||
@subsection What is GNUstep's position towards KDE and the GNOME project?
|
||||
|
||||
You can use GNUstep with GNOME and/or KDE. GNUstep displays
|
||||
on top of X11. You can still do programming in C (since Objective-C
|
||||
is just a superset of C), and when (if?) GCC gets around to it,
|
||||
you'll be able to mix C++ and Objective-C code in the SAME file.
|
||||
|
||||
GNUstep, is much more than a window manager or desktop environment.
|
||||
It frees you to develop cross-platform applications without the
|
||||
work of developing an OS independent framework from scratch. It
|
||||
gives you lots of basic functionality, from Font Panels to Unicode
|
||||
strings to Distributed Objects.
|
||||
|
||||
|
||||
@node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What is GNUstep's position towards KDE and the GNOME project?, GNUstep General Information
|
||||
@subsection Is the Objective C API for GTK related?
|
||||
|
||||
No. GNUstep applications provide their GUI via the OpenStep
|
||||
API, which provides fully object-oriented access to GUI manipulation.
|
||||
|
||||
The object-oriented nature of the libraries and language make it much easier
|
||||
for new users to create their own subclasses rather than simply using the
|
||||
supplied widgets as in other frameworks.
|
||||
|
||||
@node How about implementing parts of the Application Kit with GTK?, Which compiler can I use? Where can I get it?, Is the Objective C API for GTK related?, GNUstep General Information
|
||||
@subsection How about implementing parts of the Application Kit with GTK?
|
||||
|
||||
Yes and No - The GNUstep architecture provides a single,
|
||||
platform-independent, API for handling all aspects of GUI interaction
|
||||
(implemented in the gstep-gui library), with a backend architecture
|
||||
that permits you to have different display models (display postscript,
|
||||
X-windows, win32, berlin ...) while letting you use the same code
|
||||
for printing as for displaying. Use of GTK in the frontend gui
|
||||
library would remove some of those advantages without adding any.
|
||||
|
||||
That being said, a backend library could be implemented using gtk
|
||||
if anyone wanted to do so. Since the frontend library handles most
|
||||
of the work involved in implementing the OpenStep API, the backend
|
||||
is a relatively thin layer and the advantages of GTK over direct
|
||||
xlib or win32 calls is likely to be minimal. If/when GTK is ported
|
||||
to more systems, a backend written using it could be a valuable
|
||||
asset - volunteers are, as always, wecome.
|
||||
|
||||
@node Which compiler can I use? Where can I get it?, Which Foundation Library can I use?, How about implementing parts of the Application Kit with GTK?, GNUstep General Information
|
||||
@subsection Which compiler can I use? Where can I get it?
|
||||
|
||||
Use gcc-2.8.1 or later, from any GNU ftp site or, on some
|
||||
platforms you must use egcs-1.1.1 or later, from http://egcs.cygnus.com/
|
||||
|
||||
@node Which Foundation Library can I use?, How do you use the gnustep-make package?, Which compiler can I use? Where can I get it?, GNUstep General Information
|
||||
@subsection Which Foundation Library can I use?
|
||||
|
||||
That depends ...
|
||||
|
||||
If you only want to use the database package - gnustep-db, you can
|
||||
use either the gnustep base library or libFoundation.
|
||||
|
||||
If you want to develop/use GNUstep gui applications, you must use
|
||||
the gnustep-base library since libFoundation is (13-Feb-2000)
|
||||
missing much essential functionality.
|
||||
|
||||
|
||||
@node How do you use the gnustep-make package?, How can I get GNUstep?, Which Foundation Library can I use?, GNUstep General Information
|
||||
@subsection How do you use the gnustep-make package?
|
||||
|
||||
Good question. Read the tutorials at the GNUstep web site. Also, use the
|
||||
makefiles in the libraries, tool directories, and test applications as
|
||||
examples.
|
||||
|
||||
@node How can I get GNUstep?, How do you run GNUstep?, How do you use the gnustep-make package?, GNUstep General Information
|
||||
@subsection How can I get GNUstep?
|
||||
|
||||
Get the HOWTO from
|
||||
@url{http://www.gnustep.org/resources/documentation/GNUstep-HOWTO}
|
||||
Get the latest release from @url{ftp://ftp.gnustep.org}. If you're
|
||||
really adventurous, get the latest snapshot by anonymous ftp from
|
||||
@url{ftp://ftp.gnustep.org:/pub/daily-snapshots}
|
||||
|
||||
Use anonymous CVS to keep up to date - instructions are in the
|
||||
HOWTO.
|
||||
|
||||
@node How do you run GNUstep?, Is there a web site?, How can I get GNUstep?, GNUstep General Information
|
||||
@subsection How do you run GNUstep?
|
||||
|
||||
You are presumably under the misapprehension that GNUstep is
|
||||
some sort of window manager.
|
||||
|
||||
It isn't.
|
||||
|
||||
GNUstep is a whole load of things - primarily a set of libraries
|
||||
for developing software.
|
||||
|
||||
At present, it's those libraries, plus various command-line based
|
||||
support tools and service providing daemons. In the future, it
|
||||
will be the libraries, plus the support tools, plus various GUI
|
||||
development tools, a GUI desktop/workspace application etc.
|
||||
|
||||
At no stage will you ever 'run' GNUstep - you will run applications
|
||||
and tools and will make use of it's services (though at some point
|
||||
you may well find packages distributed as 'GNUstep' systems in the
|
||||
way that you get 'Linux' systems packaged today).
|
||||
|
||||
Current tools are -
|
||||
|
||||
@example
|
||||
The makefiles package
|
||||
To make building GNUstep tools and apps simple.
|
||||
The 'openapp' script
|
||||
To start up a GUI application from the command line.
|
||||
The defaults tools
|
||||
To read, create, delete, and modify user defaults from the command
|
||||
line.
|
||||
The name server
|
||||
To permit applications and tools to locate each other and
|
||||
communicate.
|
||||
The pasteboard server
|
||||
To permit cut-and-paste, drag-and-drop, and to let applicationsm
|
||||
and tools transparently provide services to each other.
|
||||
The distributed notification center
|
||||
To permit applications and tools to be notified of arbitrary
|
||||
external events.
|
||||
The 'make_services' program
|
||||
To locate (and cache information about) applications that are
|
||||
willing to provide services to other applications.
|
||||
The 'set_show_service' program
|
||||
A command-line utility to determine what services an application
|
||||
should be permitted to offer on it's 'services' menu.
|
||||
@end example
|
||||
|
||||
If you want to see a sample GUI application running you need to build
|
||||
GNUstep and look at the example applications in the gstep-examples
|
||||
package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
|
||||
or 'openapp Ink.app'
|
||||
|
||||
To look best - use WindowMaker (the currently preferred GNUstep
|
||||
window manager) as your window manager.
|
||||
|
||||
@node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information
|
||||
@subsection Is there a web site?
|
||||
|
||||
See @url{http://www.gnustep.org/}.
|
||||
|
||||
@node When is GNUstep intended to be available?, What is usable?, Is there a web site?, GNUstep General Information
|
||||
@subsection When is GNUstep intended to be available?
|
||||
|
||||
It's usable now. Releases are made about every six months. However, if
|
||||
you are a serious developer, it's probably best to use the latest
|
||||
snapshots. See the GNUstep web site for a release schedule.
|
||||
|
||||
@node What is usable?, , When is GNUstep intended to be available?, GNUstep General Information
|
||||
@subsection What is usable?
|
||||
|
||||
@itemize @bullet
|
||||
@item gstep-make does pretty much what the makefiles in NeXTstep do.
|
||||
@item gstep-base (Foundation) stuff should work fine for almost all projects.
|
||||
@item gstep-db is only EOF-1.0 compatible but should work ok.
|
||||
@item gstep-gui (AppKit) has a lot working but there is still stuff missing.
|
||||
@item DGS (Display Ghostscript) is usable but slow.
|
||||
@end itemize
|
||||
|
||||
@c ****************************************************************
|
||||
@c Compiling
|
||||
@node Compatibility with OPENSTEP/Cocoa/MacOSX, Compiling and Developing, GNUstep General Information, Top
|
||||
@section Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Compatibility, Compiling and Developing, Top, Top
|
||||
@section Compatibility
|
||||
|
||||
@menu
|
||||
* Can I run NeXT OPENSTEP or Apple Rhapsody programs on GNUstep?::
|
||||
* Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?::
|
||||
* Can I transfer archived data from GNUstep to Cocoa?::
|
||||
* Does distributed objects work between GNUstep and Cocoa?::
|
||||
* Is there an Interface Builder for GNUstep?::
|
||||
* Can I use my original NIB files?::
|
||||
* Will code without NIB files work?::
|
||||
* Is GNUstep following Apple's Changes to OpenStep?::
|
||||
* Do we have to have the NeXTstep look and feel?::
|
||||
* Can one use the hybrid "Objective-C++"::
|
||||
* Is there a plan to support Java/YellowBox Bindings?::
|
||||
* What if I compile GNUstep under OPENSTEP/MacOS X Server?::
|
||||
* Is the Objective C API for GTK related?::
|
||||
* How about implementing parts of the Application Kit with GTK?::
|
||||
@end menu
|
||||
|
||||
@node Can I run NeXT OPENSTEP or Apple Rhapsody programs on GNUstep?, Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?, Compatibility with OPENSTEP/Cocoa/MacOSX, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@subsection Can I run NeXT OPENSTEP or Apple Rhapsody programs on GNUstep?
|
||||
|
||||
You can't run these programs on GNUstep, but if you have the source
|
||||
code for the programs, you should be able to port them to GNUstep and
|
||||
compile them. Whether or not you will be able to run them depends on how
|
||||
complete GNUstep is at the time.
|
||||
|
||||
@node Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Can I run NeXT OPENSTEP or Apple Rhapsody programs on GNUstep?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Compatibility, Compatibility
|
||||
@subsection Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?
|
||||
|
||||
It is probably easy for simple programs. There are some portability
|
||||
|
@ -321,7 +45,7 @@ or rewrite the Makefiles yourself. You will also have to
|
|||
translate the NIB files (if there are any) to GNUstep model files using
|
||||
the nib2gmodel program (from @url{ftp://ftp.gnustep.org/pub/gnustep/dev-apps}).
|
||||
|
||||
@node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Can I transfer archived data from GNUstep to Cocoa?, Does distributed objects work between GNUstep and Cocoa?, Is it easy to port OPENSTEP and Rhapsody programs to GNUstep?, Compatibility
|
||||
@subsection Can I transfer archived data from GNUstep to Cocoa?
|
||||
|
||||
Apple's archiving format is proprietary and not documented, so this
|
||||
|
@ -341,13 +65,13 @@ tool, which has an archiver that works both on GNUstep and Cocoa. It
|
|||
might be nice to split this off into a separate project to make it
|
||||
easier for other people to do the same thing.
|
||||
|
||||
@node Does distributed objects work between GNUstep and Cocoa?, Is there an Interface Builder for GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Does distributed objects work between GNUstep and Cocoa?, Is there an Interface Builder for GNUstep?, Can I transfer archived data from GNUstep to Cocoa?, Compatibility
|
||||
@subsection Does distributed objects work between GNUstep and Cocoa?
|
||||
|
||||
See the answer to the previous question (on archive compatibility) for
|
||||
why this won't work either.
|
||||
|
||||
@node Is there an Interface Builder for GNUstep?, Can I use my original NIB files?, Does distributed objects work between GNUstep and Cocoa?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Is there an Interface Builder for GNUstep?, Can I use my original NIB files?, Does distributed objects work between GNUstep and Cocoa?, Compatibility
|
||||
@subsection Is there an Interface Builder for GNUstep?
|
||||
|
||||
There is an Interface Builder for GNUstep called Gorm, but it is
|
||||
|
@ -355,7 +79,7 @@ in alpha release, so it may not work perfectly. You can download it from
|
|||
the ftp site or via http.
|
||||
The Project Manager ProjectCenter is also available.
|
||||
|
||||
@node Can I use my original NIB files?, Will code without NIB files work?, Is there an Interface Builder for GNUstep?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Can I use my original NIB files?, Can one use the hybrid "Objective-C++", Is there an Interface Builder for GNUstep?, Compatibility
|
||||
@subsection Can I use my original NIB files?
|
||||
|
||||
No - NeXT/Apple never documented their nib format, so GNUstep supports
|
||||
|
@ -365,41 +89,16 @@ archive format (which can be edited by Gorm). There IS a conversion
|
|||
tool called nib2gmodel that can be compiled under OPENSTEP to convert
|
||||
OPENSTEP nib files to GNUstep gmodel files.
|
||||
|
||||
@node Will code without NIB files work?, Is GNUstep following Apple's Changes to OpenStep?, Can I use my original NIB files?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@subsection Will code without NIB files work?
|
||||
|
||||
Well, GNUstep implements the OpenStep API, not the old NeXTstep
|
||||
API but, Yes - once the gui library is complete, OpenStep or MacOS-X
|
||||
code should work without translation under GNUstep.
|
||||
|
||||
@node Is GNUstep following Apple's Changes to OpenStep?, Do we have to have the NeXTstep look and feel?, Will code without NIB files work?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@subsection Is GNUstep following Apple's Changes to OpenStep?
|
||||
|
||||
Yes - gstep-base already contains the documented changes in the
|
||||
Foundation library. GNUstep aims to be compatible with both the
|
||||
OpenStep specification and with MacOS-X It should be easy to write
|
||||
an application that compiles cleanly under both GNUstep and Yellow
|
||||
Box.
|
||||
|
||||
@node Do we have to have the NeXTstep look and feel?, Can one use the hybrid "Objective-C++", Is GNUstep following Apple's Changes to OpenStep?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@subsection Do we have to have the NeXTstep look and feel?
|
||||
|
||||
Gnustep is aiming for something like the NeXTstep-3.3 look and
|
||||
feel. This is mostly determined by the gui backend library. In the
|
||||
case of the two existing backends (xdps and xgps), both are designed
|
||||
to look like NeXTstep/OPENSTEP. If someone wants to write a backend
|
||||
with a different look, they can. This would only be a few man-months
|
||||
work.
|
||||
|
||||
@node Can one use the hybrid "Objective-C++", Is there a plan to support Java/YellowBox Bindings?, Do we have to have the NeXTstep look and feel?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Can one use the hybrid "Objective-C++", Is there a plan to support Java/YellowBox Bindings?, Can I use my original NIB files?, Compatibility
|
||||
@subsection Can one use the hybrid "Objective-C++"
|
||||
that one could on the NeXT?
|
||||
|
||||
No - at present the GNU compiler (gcc) does not support
|
||||
"Objective-C++" There are no specific plans to make it do so, but
|
||||
any volunteers to do it would be welcome.
|
||||
No. at present the GNU compiler (gcc) does not support
|
||||
"Objective-C++". Apple has submitted patches for this, but it is up to
|
||||
the GCC steering commitee to decide if they want to add them. If you
|
||||
would like to see this, please politely and respectfully lobby them at
|
||||
@url{gcc@@gnu.org}.
|
||||
|
||||
@node Is there a plan to support Java/YellowBox Bindings?, What if I compile GNUstep under OPENSTEP/MacOS X Server?, Can one use the hybrid "Objective-C++", Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node Is there a plan to support Java/YellowBox Bindings?, What if I compile GNUstep under OPENSTEP/MacOS X Server?, Can one use the hybrid "Objective-C++", Compatibility
|
||||
@subsection Is there a plan to support the Java/YellowBox Bindings?
|
||||
|
||||
Yes. The GNustep Java library/bridge called JIGS is available now. JIGS
|
||||
|
@ -412,42 +111,77 @@ virtual machines inside GNUstep Objective-C code and access java objects
|
|||
in the java virtual machine transparently, as if they were objective-C
|
||||
objects.
|
||||
|
||||
@node What if I compile GNUstep under OPENSTEP/MacOS X Server?, , Is there a plan to support Java/YellowBox Bindings?, Compatibility with OPENSTEP/Cocoa/MacOSX
|
||||
@node What if I compile GNUstep under OPENSTEP/MacOS X Server?, Is the Objective C API for GTK related?, Is there a plan to support Java/YellowBox Bindings?, Compatibility
|
||||
@subsection What if I compile GNUstep under OPENSTEP/MacOS X Server?
|
||||
|
||||
No - GNUstep uses the X-windows display postscript extension
|
||||
- the interface to that is not the same as the interface to the
|
||||
GNUstep uses the X-windows display postscript extension.
|
||||
The interface to that is not the same as the interface to the
|
||||
OPENSTEP/MacOS-X windows server. While someone could write a
|
||||
backend library to provide the interface, nobody has bothered to
|
||||
date.
|
||||
|
||||
Also, the GNUstep base library is still being ported to Darwin.
|
||||
|
||||
@node Is the Objective C API for GTK related?, How about implementing parts of the Application Kit with GTK?, What if I compile GNUstep under OPENSTEP/MacOS X Server?, Compatibility
|
||||
@subsection Is the Objective C API for GTK related?
|
||||
|
||||
No. GNUstep applications provide their GUI via the OpenStep
|
||||
API, which provides fully object-oriented access to GUI manipulation.
|
||||
|
||||
The object-oriented nature of the libraries and language make it much easier
|
||||
for new users to create their own subclasses rather than simply using the
|
||||
supplied widgets as in other frameworks.
|
||||
|
||||
@node How about implementing parts of the Application Kit with GTK?, , Is the Objective C API for GTK related?, Compatibility
|
||||
@subsection How about implementing parts of the Application Kit with GTK?
|
||||
|
||||
Yes and No - The GNUstep architecture provides a single,
|
||||
platform-independent, API for handling all aspects of GUI interaction
|
||||
(implemented in the gstep-gui library), with a backend architecture
|
||||
that permits you to have different display models (display postscript,
|
||||
X-windows, win32, berlin ...) while letting you use the same code
|
||||
for printing as for displaying. Use of GTK in the frontend gui
|
||||
library would remove some of those advantages without adding any.
|
||||
|
||||
That being said, a backend library could be implemented using gtk
|
||||
if anyone wanted to do so. Since the frontend library handles most
|
||||
of the work involved in implementing the OpenStep API, the backend
|
||||
is a relatively thin layer and the advantages of GTK over direct
|
||||
xlib or win32 calls is likely to be minimal. If/when GTK is ported
|
||||
to more systems, a backend written using it could be a valuable
|
||||
asset - volunteers are, as always, wecome.
|
||||
|
||||
|
||||
@c ****************************************************************
|
||||
@c Compiling
|
||||
@node Compiling and Developing, GNU Objective C Compiler and Objective C Runtime Library, Compatibility with OPENSTEP/Cocoa/MacOSX, Top
|
||||
@node Compiling and Developing, GNU Objective C Compiler and Runtime, Compatibility, Top
|
||||
@section Compiling and Developing
|
||||
|
||||
@menu
|
||||
* How can I get started programming?::
|
||||
* How can I help with GNUstep?::
|
||||
* How do I start writing code?::
|
||||
* How do I start writing documentation?::
|
||||
* Helping develop GNUstep::
|
||||
* Helping document GNUstep::
|
||||
* How do I update the task list?::
|
||||
* How do I start writing tests?::
|
||||
* How do I start writing applications?::
|
||||
* How can I help with the GNUstep website?::
|
||||
* How do I compile GNUstep on my machine? ::
|
||||
* Are there any precompiled packages available?::
|
||||
* What are these type and size warnings?::
|
||||
@end menu
|
||||
|
||||
@node How can I help with GNUstep?, How do I start writing code?, Compiling and Developing, Compiling and Developing
|
||||
@node How can I get started programming?, How can I help with GNUstep?, Compiling and Developing, Compiling and Developing
|
||||
@subsection How can I get started programming?
|
||||
|
||||
Good question. Read the tutorials at the GNUstep web site. Also look at
|
||||
Apple's documentation (pointers in the Resources section on the GNUstep web
|
||||
site.
|
||||
|
||||
@node How can I help with GNUstep?, Helping develop GNUstep, How can I get started programming?, Compiling and Developing
|
||||
@subsection How can I help with GNUstep?
|
||||
|
||||
@enumerate
|
||||
@item Write/debug library code
|
||||
@item Write documentation
|
||||
@item Update the TODO list and library headers
|
||||
@item Update the task list and library headers
|
||||
@item Write applications
|
||||
@end enumerate
|
||||
|
||||
|
@ -477,10 +211,10 @@ that begin with a slash and two asterices). But PLEASE, do not copy from
|
|||
the Apple documentation or any other copyrighted documentation.
|
||||
|
||||
|
||||
@node How do I start writing code?, How do I start writing documentation?, How can I help with GNUstep?, Compiling and Developing
|
||||
@subsection How do I start writing code?
|
||||
@node Helping develop GNUstep, Helping document GNUstep, How can I help with GNUstep?, Compiling and Developing
|
||||
@subsection Helping develop GNUstep
|
||||
|
||||
There is plenty of unimplemented stuff in the gui library and
|
||||
There is plenty of unimplemented stuff in the gui library and
|
||||
backend libraries that volunteers can work on - just browse through
|
||||
the code and see if it conforms to the documentation.
|
||||
|
||||
|
@ -490,8 +224,8 @@ website.
|
|||
Once you have coded something, you could always write a testcase
|
||||
and documentation for it :-)
|
||||
|
||||
@node How do I start writing documentation?, How do I update the task list?, How do I start writing code?, Compiling and Developing
|
||||
@subsection How do I start writing documentation?
|
||||
@node Helping document GNUstep, How do I update the task list?, Helping develop GNUstep, Compiling and Developing
|
||||
@subsection Helping document GNUstep
|
||||
|
||||
All class documentation is written directly in the source code itself
|
||||
and translated using the autogsdoc program. See the source code and
|
||||
|
@ -514,22 +248,24 @@ format into gsdoc.
|
|||
GNUstep documentation should have copyright assigned to the Free
|
||||
Software Foundation.
|
||||
|
||||
@node How do I update the task list?, How do I start writing tests?, How do I start writing documentation?, Compiling and Developing
|
||||
@node How do I update the task list?, How do I start writing tests?, Helping document GNUstep, Compiling and Developing
|
||||
@subsection How do I update the task list?
|
||||
|
||||
The task list (@url{http://www.gnustep.org/developers/tasks.html}) is
|
||||
supposed to tell people what jobs are waiting to be done.
|
||||
The task list (@url{http://savannah.gnu.org/pm/?group_id=99}) is
|
||||
supposed to tell people what jobs are waiting to be done. Feel free to
|
||||
add to it or update the tasks that are there (you need to create a login
|
||||
for yourself first).
|
||||
|
||||
One job of major importance that pretty much anyone can do is to
|
||||
look for jobs to add to the task list. In the case of methods from
|
||||
the OpenStep specification or the MacOS-X documentation not being
|
||||
present in the GNustep libraries, it is also helpful to add the
|
||||
present in the GNUstep libraries, it is also helpful to add the
|
||||
method prototypes to the library header files.
|
||||
|
||||
Send any changes or additions to @email{bug-gnustep@@gnu.org}.
|
||||
|
||||
A beginner can look through the MacOS-X documentation, the OpenStep
|
||||
specification and the GNUstep source and contribute TODO items.
|
||||
specification and the GNUstep source and contribute task items.
|
||||
|
||||
If a class or method is in MacOS-X and OpenStep but is not in
|
||||
GNUstep - it's a high priority TODO and should at least be added
|
||||
|
@ -558,8 +294,8 @@ latest GNUstep snapshots you can find. Then checkout the 'tests'
|
|||
module from CVS. In the 'tests' directory, you will find a
|
||||
regression testing framework.
|
||||
In order to use this you will also need a recent (v 1.3.2 or later) copy of
|
||||
Guile (you can get this from a GNU ftp site) and will need to hacke checked
|
||||
out, built, and installed the 'guile' package from the GNUstep CVS repository.
|
||||
Guile (you can get this from a GNU ftp site) and will need to check-out,
|
||||
built, and installed the 'guile' package from the GNUstep CVS repository.
|
||||
|
||||
@node How do I start writing applications?, How can I help with the GNUstep website?, How do I start writing tests?, Compiling and Developing
|
||||
@subsection How do I start writing applications?
|
||||
|
@ -568,16 +304,16 @@ out, built, and installed the 'guile' package from the GNUstep CVS repository.
|
|||
applications that have been started, and email their owners to
|
||||
volunteer to help, or you can start your own project.
|
||||
|
||||
@node How can I help with the GNUstep website?, How do I compile GNUstep on my machine? , How do I start writing applications?, Compiling and Developing
|
||||
@node How can I help with the GNUstep website?, , How do I start writing applications?, Compiling and Developing
|
||||
@subsection How can I help with the GNUstep website?
|
||||
|
||||
Talk to Adam Fedor @email{fedor@@gnu.org}, the maintainer.
|
||||
|
||||
The GNUstep website is kept as a CVS module, but the largest portions
|
||||
of it (the FAQ, the TODO list, and the Documentation) are actually
|
||||
of it (the FAQ and the Documentation) are actually
|
||||
generated from files in the individual GNUstep packages.
|
||||
|
||||
If you want to update the FAQ or TODO list or documentation - grab
|
||||
If you want to update the FAQ or documentation - grab
|
||||
the latest snapshot of the GNUstep core you can find, update it
|
||||
from the CVS repository, and work with the contents of the appropriate
|
||||
documentation directory.
|
||||
|
@ -590,47 +326,19 @@ to do that.
|
|||
The main task with the website is to figure out which bits are
|
||||
out-of-date (or wrong) and update/mark-as-outdated as required.
|
||||
|
||||
@node How do I compile GNUstep on my machine? , Are there any precompiled packages available?, How can I help with the GNUstep website?, Compiling and Developing
|
||||
@subsection How do I compile GNUstep on my machine?
|
||||
|
||||
Read the file @file{GNUstep-HOWTO}, which comes with the GNUstep
|
||||
distribution, and also is available separately on the GNUstep web
|
||||
site.
|
||||
|
||||
@node Are there any precompiled packages available?, What are these type and size warnings?, How do I compile GNUstep on my machine? , Compiling and Developing
|
||||
@subsection Are there any precompiled packages available?
|
||||
|
||||
Check @url{http://www.gnustep.org/resources/sources.html} for links
|
||||
to sites with RPMS, and perhaps in the future, Debian packages.
|
||||
In some cases. You can check the debian site for preconfigured GNUstep
|
||||
packages. Also check the BSD sites for GNUstep ports.
|
||||
|
||||
@node What are these type and size warnings?, , Are there any precompiled packages available?, Compiling and Developing
|
||||
@subsection What are these type and size warnings?
|
||||
|
||||
These warnings:
|
||||
@example
|
||||
/usr/bin/ld: warning: type and size of dynamic symbol
|
||||
`__objc_class_name_NSConstantString' are not defined
|
||||
@end example
|
||||
|
||||
are a common occurence and are due to a mismatch between gcc and
|
||||
ld. They don't do any harm so they can be safely ignored. Apparently no
|
||||
one has bothered to fix them yet.
|
||||
|
||||
@c -------------------------------------------------------------------
|
||||
|
||||
@node GNU Objective C Compiler and Objective C Runtime Library, GNUstep Base Library, Compiling and Developing, Top
|
||||
@section GNU Objective C Compiler and Objective C Runtime Library
|
||||
@node GNU Objective C Compiler and Runtime, GNUstep Base Library, Compiling and Developing, Top
|
||||
@section GNU Objective C Compiler and Runtime
|
||||
|
||||
@menu
|
||||
* What is the Objective C Runtime Library?::
|
||||
* What is the Objective C Runtime?::
|
||||
* Does it allow a mixture of Objective C and C++::
|
||||
* Where can I find more information?::
|
||||
@end menu
|
||||
|
||||
@node What is the Objective C Runtime Library?, Does it allow a mixture of Objective C and C++, GNU Objective C Compiler and Objective C Runtime Library, GNU Objective C Compiler and Objective C Runtime Library
|
||||
@subsection What is the Objective C Runtime Library?
|
||||
@node What is the Objective C Runtime?, Does it allow a mixture of Objective C and C++, GNU Objective C Compiler and Runtime, GNU Objective C Compiler and Runtime
|
||||
@subsection What is the Objective C Runtime?
|
||||
|
||||
The Objective C Runtime Library provides C functions and data structures
|
||||
required to execute an Objective C program.
|
||||
|
@ -671,28 +379,15 @@ objects implementations, (see GNUstep Base Library Section, below).
|
|||
corresponding NeXT functions; the GNU names conform to the GNU coding
|
||||
standards.
|
||||
|
||||
@item NeXT's compiler, @samp{cc}, is based on an old version of
|
||||
@samp{gcc}. GNU's compiler is, of course, the latest version of
|
||||
@samp{gcc}, and therefore contains all the latest enhancements.
|
||||
|
||||
@end itemize
|
||||
|
||||
@node Does it allow a mixture of Objective C and C++, Where can I find more information?, What is the Objective C Runtime Library?, GNU Objective C Compiler and Objective C Runtime Library
|
||||
@node Does it allow a mixture of Objective C and C++, Where can I find more information?, What is the Objective C Runtime?, GNU Objective C Compiler and Runtime
|
||||
@subsection Does it allow a mixture of Objective C and C++?
|
||||
|
||||
No. Unlike NeXT's @samp{cc}, GNU GCC does not support source files
|
||||
containing both Objective C and C++. Apple seems to be willing to
|
||||
merge their code back into the main GCC project, but this may take some
|
||||
convincing of the GCC maintainers due to the large number of changes
|
||||
necessary. Send
|
||||
email to @samp{discuss-gnustep@@gnu.org} if you are interesting in
|
||||
pushing this issue, so that the efforts of all those people interested
|
||||
can be coordinated.
|
||||
No.
|
||||
See @pxref{Can one use the hybrid "Objective-C++"}
|
||||
|
||||
Also, unlike NeXT's @samp{cc}, GNU GCC does not support the @samp{extern
|
||||
"Objective-C"} construct.
|
||||
|
||||
@node Where can I find more information?, , Does it allow a mixture of Objective C and C++, GNU Objective C Compiler and Objective C Runtime Library
|
||||
@node Where can I find more information?, , Does it allow a mixture of Objective C and C++, GNU Objective C Compiler and Runtime
|
||||
@subsection Where can I find more information?
|
||||
|
||||
The FAQ associated with the newsgroup @samp{comp.lang.objective-c}
|
||||
|
@ -700,7 +395,7 @@ contains more information about GNU Objective C.
|
|||
|
||||
@c ------------- GNU Compiler and Objective C Runtime Library -------
|
||||
|
||||
@node GNUstep Base Library, GNUstep GUI Library, GNU Objective C Compiler and Objective C Runtime Library, Top
|
||||
@node GNUstep Base Library, GNUstep GUI Library, GNU Objective C Compiler and Runtime, Top
|
||||
@section GNUstep Base Library
|
||||
|
||||
@menu
|
||||
|
@ -745,7 +440,7 @@ as NeXT's; be warned, however, that they are not compatible with each
|
|||
other. They have different class heirarchies, different instance
|
||||
variables, different method names, different implementation strategies
|
||||
and different network message formats. You cannot communicate with a
|
||||
NeXT NSConnection using a GNU Connection.
|
||||
NeXT NSConnection using a GNU NSConnection.
|
||||
|
||||
Here are some differences between GNU distributed objects and NeXT's
|
||||
distributed objects: NeXT NSDistantObject asks it's remote
|
||||
|
@ -796,12 +491,11 @@ front-end contains the majority of implementation, but leaves out the
|
|||
low-level drawing and event code. A back-end can override whatever
|
||||
methods necessary in order to implement low-level drawing event
|
||||
receiving. Different back-ends will make GNUstep available on various
|
||||
platforms. The default GNU back-end will run on top of X Windows and
|
||||
the DisplayGhostScript Server. Other back-ends could allow GNUstep to
|
||||
run on OpenGL, OS/2, and WIN32 graphics/event platforms. Much work
|
||||
will be saved by this clean separation between front- and back-end,
|
||||
because it allows different platforms to share the large amount of
|
||||
front-end code.
|
||||
platforms. The default GNU back-end will run on top of X Windows.
|
||||
Other back-ends could allow GNUstep to run on OpenGL and WIN32
|
||||
graphics/event platforms. Much work will be saved by this clean
|
||||
separation between front- and back-end, because it allows different
|
||||
platforms to share the large amount of front-end code.
|
||||
|
||||
@node What is the current state of development of the front-end?, What is the current state of development of the X/DPS back-end?, Explain the organization of the front- and back-ends, GNUstep GUI Library
|
||||
@subsection What is the current state of development of the front-end?
|
||||
|
|
|
@ -4,32 +4,116 @@
|
|||
@node Top, GNUstep General Information, (dir), (dir)
|
||||
@chapter GNUstep Frequently Asked Questions for Users
|
||||
|
||||
Last updated @today{}
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}.
|
||||
Last updated @today{}.
|
||||
Please send corrections to @email{gnustep-maintainer@@gnu.org}. Also look
|
||||
at the (developer) FAQ for more developer oriented questions.
|
||||
|
||||
@menu
|
||||
* GNUstep General Information::
|
||||
* Compiling and Installing::
|
||||
* Compatibility and Layout::
|
||||
* Troubleshooting::
|
||||
@end menu
|
||||
|
||||
@node GNUstep General Information, Troubleshooting, Top, Top
|
||||
@node GNUstep General Information, Compiling and Installing, Top, Top
|
||||
@section GNUstep General Information
|
||||
|
||||
@menu
|
||||
* What is GNUstep?::
|
||||
* What is the OpenStep standard?::
|
||||
* What platforms does GNUstep run on?::
|
||||
* Does GNUstep run on Windows?::
|
||||
* What is GNUstep's position towards KDE and the GNOME project?::
|
||||
* Which Foundation Library can I use?::
|
||||
* How can I get GNUstep?::
|
||||
* How do you run GNUstep?::
|
||||
* Is there a web site?::
|
||||
* When is GNUstep intended to be available?::
|
||||
* What is usable?::
|
||||
@end menu
|
||||
|
||||
@node What is GNUstep?, How can I get GNUstep?, GNUstep General Information, GNUstep General Information
|
||||
@node What is GNUstep?, What is the OpenStep standard?, GNUstep General Information, GNUstep General Information
|
||||
@subsection What is GNUstep?
|
||||
|
||||
GNUstep is the Free Software Foundation's effort to implement NeXT
|
||||
Software Inc.'s (now Apple Inc.) OpenStep Standard. The project is not
|
||||
finished, so some parts are not as polished as they could be.
|
||||
|
||||
@node How can I get GNUstep?, How do you run GNUstep?, What is GNUstep?, GNUstep General Information
|
||||
@node What is the OpenStep standard?, What platforms does GNUstep run on?, What is GNUstep?, GNUstep General Information
|
||||
@subsection What is the OpenStep standard?
|
||||
|
||||
OpenStep is an Application Programming Interface (API) for creating
|
||||
applications using the Objective C language. It was published by NeXT
|
||||
Computer Inc. in 1994.
|
||||
|
||||
OpenStep consists of three parts: the @samp{FoundationKit}, a library of
|
||||
non-graphical objects; the @samp{AppKit}, a library of objects useful in
|
||||
creating graphical applications; and @samp{Display Postscript}, an
|
||||
interface for drawing to the screen using the PostScript graphics
|
||||
language.
|
||||
|
||||
You can obtain a copy of the OpenStep standard from the GNUstep web site
|
||||
@url{http://www.gnustep.org} or it's mirror sites.
|
||||
|
||||
@node What platforms does GNUstep run on?, Does GNUstep run on Windows?, What is the OpenStep standard?, GNUstep General Information
|
||||
@subsection What platforms does GNUstep run on?
|
||||
|
||||
See the list of supported platforms at
|
||||
@url{http://www.gnustep.org/information/machines_toc.html} for
|
||||
information on what machines GNUstep builds on and what the status of
|
||||
the ports is. Probably a few days porting to any other Unix system where
|
||||
current gcc/egcs compilers and gdb debugger work.
|
||||
|
||||
@node Does GNUstep run on Windows?, What is GNUstep's position towards KDE and the GNOME project?, What platforms does GNUstep run on?, GNUstep General Information
|
||||
@subsection Does GNUstep run on Windows?
|
||||
|
||||
The primary targets for GNUstep are free 'Unix' platforms such
|
||||
as GNU/Linux.
|
||||
|
||||
That being said, the base library should run on Windows-NT,98 with the
|
||||
Cygwin unix emulation library from Cygnus
|
||||
(http://sourceware.cygnus.com/cygwin/) or the MinGW libraries. At
|
||||
present there are a few problems with networking (Distributed Objects)
|
||||
support, but the library is believed to work.
|
||||
|
||||
The gui library needs a win32 backend library to work under
|
||||
Windows-NT. The backend library is a thin layer that converts the
|
||||
GNUstep methods to handle drawing of GUI elements to calls to the
|
||||
win32 API. This is a project looking for a volunteer.
|
||||
|
||||
The application-wrapper used for GNUstep already allows for multiple
|
||||
binaries to be stored for different systems, so you should be able
|
||||
to write once, deploy anywhere.
|
||||
|
||||
|
||||
@node What is GNUstep's position towards KDE and the GNOME project?, Which Foundation Library can I use?, Does GNUstep run on Windows?, GNUstep General Information
|
||||
@subsection What is GNUstep's position towards KDE and the GNOME project?
|
||||
|
||||
You can use GNUstep with GNOME and/or KDE. GNUstep displays
|
||||
on top of X11. You can still do programming in C (since Objective-C
|
||||
is just a super-set of C), and when (if?) GCC gets around to it,
|
||||
you'll be able to mix C++ and Objective-C code in the SAME file.
|
||||
|
||||
GNUstep, is much more than a window manager or desktop environment.
|
||||
It frees you to develop cross-platform applications without the
|
||||
work of developing an OS independent framework from scratch. It
|
||||
gives you lots of basic functionality, from Font Panels to Unicode
|
||||
strings to Distributed Objects.
|
||||
|
||||
@node Which Foundation Library can I use?, How can I get GNUstep?, What is GNUstep's position towards KDE and the GNOME project?, GNUstep General Information
|
||||
@subsection Which Foundation Library can I use?
|
||||
|
||||
That depends ...
|
||||
|
||||
If you only want to use the database package - gnustep-db, you can
|
||||
use either the gnustep base library or libFoundation.
|
||||
|
||||
If you want to develop/use GNUstep gui applications, you must use
|
||||
the gnustep-base library since libFoundation is (13-Feb-2000)
|
||||
missing much essential functionality.
|
||||
|
||||
|
||||
@node How can I get GNUstep?, How do you run GNUstep?, Which Foundation Library can I use?, GNUstep General Information
|
||||
@subsection How can I get GNUstep?
|
||||
|
||||
Get the HOWTO from
|
||||
|
@ -45,7 +129,7 @@ HOWTO.
|
|||
@subsection How do you run GNUstep?
|
||||
|
||||
You are presumably under the misapprehension that GNUstep is
|
||||
some sort of window manager.
|
||||
some sort of program or window manager.
|
||||
|
||||
It isn't.
|
||||
|
||||
|
@ -53,9 +137,8 @@ GNUstep is a whole load of things - primarily a set of libraries
|
|||
for developing software.
|
||||
|
||||
At present, it's those libraries, plus various command-line based
|
||||
support tools and service providing daemons. In the future, it
|
||||
will be the libraries, plus the support tools, plus various GUI
|
||||
development tools, a GUI desktop/workspace application etc.
|
||||
support tools and service providing daemons, plus various GUI
|
||||
development tools, a GUI desktop/workspace application, etc.
|
||||
|
||||
At no stage will you ever 'run' GNUstep - you will run applications
|
||||
and tools and will make use of it's services (though at some point
|
||||
|
@ -63,35 +146,208 @@ you may well find packages distributed as 'GNUstep' systems in the
|
|||
way that you get 'Linux' systems packaged today).
|
||||
|
||||
If you want to see a sample GUI application running you need to build
|
||||
GNUstep and look at the example applications in the gstep-examples
|
||||
GNUstep and look at the example applications in the gnustep-examples
|
||||
package. Build 'Finger' or 'Ink' and start it with 'openapp Finger.app'
|
||||
or 'openapp Ink.app'
|
||||
|
||||
To look best - use WindowMaker (the currently preferred GNUstep
|
||||
window manager) as your window manager.
|
||||
|
||||
@node Is there a web site?, , How do you run GNUstep?, GNUstep General Information
|
||||
@node Is there a web site?, When is GNUstep intended to be available?, How do you run GNUstep?, GNUstep General Information
|
||||
@subsection Is there a web site?
|
||||
|
||||
See @url{http://www.gnustep.org/}.
|
||||
|
||||
@node When is GNUstep intended to be available?, What is usable?, Is there a web site?, GNUstep General Information
|
||||
@subsection When is GNUstep intended to be available?
|
||||
|
||||
It's usable now. Releases are made about every six months. However, if
|
||||
you are a serious developer, it's probably best to use the latest
|
||||
snapshots.
|
||||
|
||||
@node What is usable?, , When is GNUstep intended to be available?, GNUstep General Information
|
||||
@subsection What is usable?
|
||||
|
||||
@itemize @bullet
|
||||
@item gnustep-make does pretty much what the makefiles in NeXTstep do.
|
||||
@item gnustep-base (Foundation) stuff should work fine for almost all projects.
|
||||
@item gnustep-db is only EOF-1.0 compatible but should work OK.
|
||||
@item gnustep-gui (AppKit) has a lot working but there is still stuff missing.
|
||||
@item DGS (Display Ghostscript) is usable but slow.
|
||||
@end itemize
|
||||
|
||||
What does this mean for users? Many applications will run quite well.
|
||||
Applications that require very complex drawing and some unusual features may
|
||||
not.
|
||||
|
||||
@c ****************************************************************
|
||||
@node Troubleshooting, , GNUstep General Information, Top
|
||||
@node Compiling and Installing, Compatibility and Layout, GNUstep General Information, Top
|
||||
@section Compiling and Installing
|
||||
|
||||
@menu
|
||||
* How do I compile GNUstep on my machine? ::
|
||||
* Are there any precompiled packages available?::
|
||||
* What are these type and size warnings?::
|
||||
@end menu
|
||||
|
||||
@node How do I compile GNUstep on my machine? , Are there any precompiled packages available?, Compiling and Installing, Compiling and Installing
|
||||
@subsection How do I compile GNUstep on my machine?
|
||||
|
||||
Read the file @file{GNUstep-HOWTO}, which comes with the GNUstep
|
||||
distribution (gnustep-make), and also is available separately on the
|
||||
GNUstep web site.
|
||||
|
||||
@node Are there any precompiled packages available?, What are these type and size warnings?, How do I compile GNUstep on my machine? , Compiling and Installing
|
||||
@subsection Are there any precompiled packages available?
|
||||
|
||||
Check @url{http://www.gnustep.org/resources/sources.html} for links to
|
||||
RPMS. Debian packages are also available. You can check the debian
|
||||
site(s) for preconfigured GNUstep packages. Also check the BSD sites for
|
||||
GNUstep ports.
|
||||
|
||||
@node What are these type and size warnings?, , Are there any precompiled packages available?, Compiling and Installing
|
||||
@subsection What are these type and size warnings?
|
||||
|
||||
These warnings:
|
||||
@example
|
||||
/usr/bin/ld: warning: type and size of dynamic symbol
|
||||
`__objc_class_name_NSConstantString' are not defined
|
||||
@end example
|
||||
|
||||
are a common occurence and are due to a mismatch between gcc and
|
||||
ld. They don't do any harm so they can be safely ignored. They have been
|
||||
fixed in GCC version 3.1.
|
||||
|
||||
|
||||
@c ****************************************************************
|
||||
@node Compatibility and Layout, Troubleshooting, Compiling and Installing, Top
|
||||
@section Compatibility and Layout
|
||||
|
||||
@menu
|
||||
* Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?::
|
||||
* Is GNUstep following Changes to OpenStep and MacOSX?::
|
||||
* Do we have to have the NeXTstep look and feel?::
|
||||
* What's up with the directory structure?::
|
||||
* Why not use Frameworks?::
|
||||
@end menu
|
||||
|
||||
@node Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout, Compatibility and Layout
|
||||
@subsection Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?
|
||||
|
||||
You can't run these programs on GNUstep, but if you have the source
|
||||
code for the programs, you should be able to port them to GNUstep and
|
||||
compile them. Whether or not you will be able to run them depends on how
|
||||
complete GNUstep is at the time.
|
||||
|
||||
@node Is GNUstep following Changes to OpenStep and MacOSX?, Do we have to have the NeXTstep look and feel?, Can I run NeXT OPENSTEP or MacOSX programs on GNUstep?, Compatibility and Layout
|
||||
@subsection Is GNUstep following Changes to OpenStep and MacOSX?
|
||||
|
||||
Yes, gnustep-base already contains the documented changes in the
|
||||
Foundation library. GNUstep aims to be compatible with both the
|
||||
OpenStep specification and with MacOS-X It should be easy to write
|
||||
an application that compiles cleanly under both GNUstep and Cocao.
|
||||
|
||||
@node Do we have to have the NeXTstep look and feel?, What's up with the directory structure?, Is GNUstep following Changes to OpenStep and MacOSX?, Compatibility and Layout
|
||||
@subsection Do we have to have the NeXTstep look and feel?
|
||||
|
||||
GNUstep is aiming for something like the NeXTstep-3.3 look and feel.
|
||||
Although we don't want to force anyone into this, a lot of the power and
|
||||
ease of use comes from this feel. The look of GNUstep is something
|
||||
different - buttons and other widgets can look different but still act
|
||||
the same way. We hope to implement themes which will allow
|
||||
this. Actually we're hoping someone will volunteer to do it.
|
||||
|
||||
@node What's up with the directory structure?, Why not use Frameworks?, Do we have to have the NeXTstep look and feel?, Compatibility and Layout
|
||||
@subsection What's up with the directory structure?
|
||||
|
||||
First of all, GNUstep uses a slightly different directory structure than
|
||||
NeXT or MacOSX. Part of this is historical, part is because we can't do
|
||||
things the same way (see @pxref{Why not use Frameworks?}).
|
||||
|
||||
GNUstep also stores libraries and binaries in subdirectories based on
|
||||
the operating system and cpu. This is so you can compile and store
|
||||
binaries for different systems in the same directory structure. MacOSX
|
||||
uses Fat binaries to accomplish this (another reason we do it
|
||||
differently). If you want, you can get rid of this using the
|
||||
@samp{--enable-flattened} option to the gnustep-make package.
|
||||
|
||||
@node Why not use Frameworks?, , What's up with the directory structure?, Compatibility and Layout
|
||||
@subsection Why not use Frameworks?
|
||||
|
||||
Frameworks are much more difficult to port and to use, and are very
|
||||
unnatural on a unix system - extremely unnatural on Windows. In a
|
||||
framework, the shared dynamic library is inside a framework wrapper
|
||||
directory. Because of this, the dynamic linker can't find it.
|
||||
|
||||
We have frameworks, so how do we work around that? Well, we build dynamic
|
||||
links from a directory inside the dynamic linker path into the framework,
|
||||
which work, but then you can't move the framework anywhere else on
|
||||
the system, otherwise you break the link, and nothing will find the
|
||||
framework any longer!
|
||||
|
||||
On systems without dynamic links, like Windows, we can't even do this!
|
||||
We have to copy the library from the framework into the dynamic linker
|
||||
path, but that is simply a shared library then! Absolutely @emph{no}
|
||||
difference. You put the dynamic library in a system directory in the
|
||||
dynamic linker path, and associate with that library a resource directory.
|
||||
|
||||
I think OpenStep for Windows did that, and still called them frameworks.
|
||||
Oh well we can do the same then, and call our libraries frameworks.
|
||||
|
||||
In a shared library, the shared dynamic library is in a directory which is
|
||||
in the path to the dynamic linker. the dynamic linker can find it very
|
||||
easily. this is how all shared and static libraries work on Unix systems,
|
||||
on Windows systems and possibly on most system at all.
|
||||
|
||||
Moreover, the OpenStep API requires us to provide some stuff for
|
||||
frameworks, like creating and registering automatically a framework
|
||||
object each time a framework is used (linked at runtime, or linked into
|
||||
the app), and attaching to it the list of classes inside the framework -
|
||||
which are not particularly trivial to implement - they depend on playing
|
||||
with the linker and the object file format - and might produce troubles
|
||||
when porting. And we never use these facilities.
|
||||
|
||||
For Apple MacOSX sure it's easier. They can modify
|
||||
the system linker, compiler, the system dynamical linker. They
|
||||
always know on which platform they are working (their own), etc. They can
|
||||
modify the system to support frameworks natively. Easy that way.
|
||||
|
||||
But GNUstep is meant to run on many different platforms, platforms which
|
||||
we don't control (Windows, Sun Solaris, Darwin, GNU/Linux, Unix
|
||||
variants) and which have different linkers and do not support frameworks
|
||||
natively. On some systems it's difficult to just load a bundle or
|
||||
compile a shared library!
|
||||
|
||||
So building the core libraries as 'libraries' means that it's much
|
||||
easier to port them, and it's much more difficult to break them.
|
||||
|
||||
Sure, frameworks have a bundle of resources associated with it - but we
|
||||
can very easily associate a bundle of resource with a shared library, no
|
||||
reason why not. We are doing it.
|
||||
|
||||
So please note that GNUstep libraries are meant to be much similar to
|
||||
MacOS X frameworks. They are composed of a shared library and
|
||||
associated with a bundle of resources. There is a difference in
|
||||
terminology, in where the resources are installed, and possibly a slight
|
||||
difference in the NSBundle API to get to the resource bundle (anyway,
|
||||
it's a one line difference between MacOSX and GNUstep, so it looks like
|
||||
very easy to #ifdef).
|
||||
|
||||
In other words, GNUstep libraries are meant to basically do the same as
|
||||
frameworks do on MacOSX, but to be portable to strange platforms (such as
|
||||
Windows).
|
||||
|
||||
|
||||
@c ****************************************************************
|
||||
@node Troubleshooting, , Compatibility and Layout, Top
|
||||
@section Troubleshooting
|
||||
|
||||
@menu
|
||||
* Problems compiling::
|
||||
* Problems with Alt key::
|
||||
@end menu
|
||||
|
||||
@node Problems with Alt key, , Troubleshooting, Troubleshooting
|
||||
@subsection Problems with Alt key
|
||||
|
||||
If you are using WindowMaker, it's possible it is grabing this key and
|
||||
using it for itself. To check, open Window Maker's WPrefs and go to the
|
||||
Mouse Preferences. Then use another value for the "Mouse grab modifier"
|
||||
(bottom right). That will allow you to alt-drag things.
|
||||
|
||||
@node Problems compiling, , Troubleshooting, Troubleshooting
|
||||
@node Problems compiling, Problems with Alt key, Troubleshooting, Troubleshooting
|
||||
@subsection Problems compiling
|
||||
|
||||
If you get something like
|
||||
|
@ -111,6 +367,13 @@ make LD_LIBRARY_PATH=$LD_LIBRARY_PATH
|
|||
You could also be having problems with gcc. gcc 2.96 does not work
|
||||
(Mandrake 8.1, perhaps others). Use a different compiler, like gcc 3.x.
|
||||
|
||||
@node Problems with Alt key, , Problems compiling, Troubleshooting
|
||||
@subsection Problems with Alt key
|
||||
|
||||
If you are using WindowMaker, it's possible it is grabing this key and
|
||||
using it for itself. To check, open Window Maker's WPrefs and go to the
|
||||
Mouse Preferences. Then use another value for the "Mouse grab modifier"
|
||||
(bottom right). That will allow you to alt-drag things.
|
||||
|
||||
@bye
|
||||
\bye
|
||||
|
|
Loading…
Reference in a new issue