📄 gtk+ faq.htm
字号:
specified by giving the --exec-prefix flags to ./configure when compiling
GTK+. It defaults to $prefix, (specified with --prefix), which in turn
defaults to /usr/local/.</P>
<P>This was done because "glibconfig.h" includes architecture dependent
information, and the rest of the include files are put in $prefix/include,
which can be shared between different architectures.</P>
<P>GTK+ includes a shell script, <TT class=LITERAL>/gtk-config/</TT>, that
makes it easy to find out the correct include paths. The GTK+ Tutorial
includes an example of using <TT class=LITERAL>/gtk-config/</TT> for
simple compilation from the command line. For information about more
complicated configuration, see the file docs/gtk-config.txt in the GTK+
distribution.</P>
<P>If you are trying to compile an old program, you may be able to work
around the problem by configuring it with a command line like:</P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>setenv CPPFLAGS
"-I/usr/local/include/glib/include"</TT><BR><TT
class=LITERAL>./configure</TT></P>
<P></P>
<P>(Substitute the appropriate value of $exec_prefix for
/usr/local.)</P></DIV>
<DIV class=SECT1>
<HR>
<H1 class=SECT1><A name=AEN247>2.7. When installing a GTK+ application,
configure reports that it can't find GTK.</A></H1>
<H4 class=sect1>When installing a GTK+ application, configure reports that
it can't find GTK.</H4>
<P>There are several common reasons for this:</P>
<P></P>
<UL>
<LI>
<P>You have an old version of GTK installed somewhere. RedHat 5.0, for
example, installs an older copy of GTK that may not work with the latest
applications. You should remove this old copy, but note that in the case
of RedHat 5.0 this will break the <TT class=LITERAL>control-panel</TT>
applications.</P>
<LI>
<P><TT class=LITERAL>gtk-config</TT> (or another component of GTK) isn't
in your path, or there is an old version on your system. Type:</P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>gtk-config --version</TT></P>
<P></P>
<P>to check for both of these. If it returns a value different from what
you expect, then you have an old version of GTK on your system.</P>
<LI>
<P>The ./configure script can't find the GTK libraries. As ./configure
compiles various test programs, it needs to be able to find the GTK
libraries. See the question above for help on this. </P></LI></UL>
<P>If none of the above help, then have a look in config.log, which is
generated by ./configure as it runs. At the bottom will be the last action
it took before failing. If it is a section of source code, copy the source
code to a file and compile it with the line just above it in config.log.
If the compilation is successful, try executing it.</P></DIV></DIV>
<DIV class=CHAPTER>
<HR>
<H1><A name=AEN264>Chapter 3. Development of GTK+</A></H1>
<DIV class=TOC>
<DL>
<DT><B>Table of Contents</B>
<DT>3.1. <A href="http://www.gtk.org/faq/#AEN266">Whats this CVS thing
that everyone keeps talking about, and how do I access it?</A>
<DT>3.2. <A href="http://www.gtk.org/faq/#AEN295">How can I contribute
to GTK+?</A>
<DT>3.3. <A href="http://www.gtk.org/faq/#AEN315">How do I know if my
patch got applied, and if not, why not?</A>
<DT>3.4. <A href="http://www.gtk.org/faq/#AEN324">What is the policy on
incorporating new widgets into the library?</A>
<DT>3.5. <A href="http://www.gtk.org/faq/#AEN327">Is anyone working on
bindings for languages other than C?</A></DT></DL></DIV>
<DIV class=SECT1>
<H1 class=SECT1><A name=AEN266>3.1. Whats this CVS thing that everyone
keeps talking about, and how do I access it?</A></H1>
<H4 class=sect1>Whats this CVS thing that everyone keeps talking about,
and how do I access it?</H4>
<P>CVS is the Concurent Version System and is a very popular means of
version control for software projects. It is designed to allow multiple
authors to be able to simultanously operate on the same source tree. This
source tree is centrally maintained, but each developer has a local mirror
of this repository that they make there changes to.</P>
<P>The GTK+ developers use a CVS repository to store the master copy of
the current development version of GTK+. As such, people wishing to
contribute patches to GTK+ should generate them against the CVS version.
Normal people should use the packaged releases.</P>
<P>The CVS toolset is available as RPM packages from the usual RedHat
sites. The latest version is available at <A target=_top
href="http://download.cyclic.com/pub/">http://download.cyclic.com/pub/</A></P>
<P>Anyone can download the latest CVS version of GTK+ by using anonymous
access using the following steps:</P>
<P></P>
<UL>
<LI>
<P>In a bourne shell descendant (e.g. bash) type:</P>
<P>
<P class=LITERALLAYOUT><TT
class=LITERAL>CVSROOT=':pserver:anonymous@anoncvs.gnome.org:/cvs/gnome'</TT><BR><TT
class=LITERAL>export CVSROOT</TT></P>
<P></P>
<LI>
<P>Next, the first time the source tree is checked out, a cvs login is
needed. </P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>cvs login</TT></P>
<P></P>
<P>This will ask you for a password. There is no password for
cvs.gimp.org, so just enter a carriage return.</P>
<LI>
<P>To get the tree and place it in a subdir of your current working
directory, issue the command:</P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>cvs -z3 get gtk+</TT></P>
<P></P>
<P>Note that with the GTK+ 1.1 tree, glib has been moved to a separate
CVS module, so if you don't have glib installed you will need to get
that as well:</P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>cvs -z3 get glib</TT></P>
<P></P></LI></UL></DIV>
<DIV class=SECT1>
<HR>
<H1 class=SECT1><A name=AEN295>3.2. How can I contribute to GTK+?</A></H1>
<H4 class=sect1>How can I contribute to GTK+?</H4>
<P>It's simple. If something doesn't work like you think it should in a
program, check the documentation to make sure you're not missing
something. If it is a true bug or missing feature, track it down in the
GTK+ source, change it, and then generate a patch in the form of a
'context diff'. This can be done using a command such as <TT
class=LITERAL>diff -ru <oldfile> <newfile></TT>. Then upload
the patchfile to:</P>
<P>
<P class=LITERALLAYOUT><TT
class=LITERAL>ftp://ftp.gtk.org/incoming</TT></P>
<P></P>
<P>along with a README file. Make sure you follow the naming conventions
or your patch will just be deleted! The filenames should be of this
form:</P>
<P>
<P class=LITERALLAYOUT><TT class=LITERAL>gtk<username>-<date
yymmdd-n>.patch.gz</TT><BR><TT
class=LITERAL>gtk-<username>-<date
yymmdd-n>.patch.README</TT></P>
<P></P>
<P>The "n" in the date indicates a unique number (starting from 0) of
patches you uploaded that day. It should be 0, unless you upload more than
one patch in the same day.</P>
<P>Example:</P>
<P>
<P class=LITERALLAYOUT><TT
class=LITERAL>gtk-gale-982701-0.patch.gz</TT><BR><TT
class=LITERAL>gtk-gale-982701-0.patch.README</TT></P>
<P></P>
<P>Once you upload <I class=EMPHASIS>anything</I>, send the README to
ftp-admin@gtk.org</P></DIV>
<DIV class=SECT1>
<HR>
<H1 class=SECT1><A name=AEN315>3.3. How do I know if my patch got applied,
and if not, why not?</A></H1>
<H4 class=sect1>How do I know if my patch got applied, and if not, why
not?</H4>
<P>Uploaded patches will be moved to <TT
class=FILENAME>ftp://ftp.gtk.org/pub/gtk/patches</TT> where one of the
GTK+ development team will pick them up. If applied, they will be moved to
<TT class=FILENAME>/pub/gtk/patches/old</TT>.</P>
<P>Patches that aren't applied, for whatever reason, are moved to <TT
class=FILENAME>/pub/gtk/patches/unapplied</TT> or <TT
class=FILENAME>/pub/gtk/patches/outdated</TT>. At this point you can ask
on the <TT class=LITERAL>gtk-list</TT> mailing list why your patch wasn't
applied. There are many possible reasons why patches may not be applied,
ranging from it doesn't apply cleanly, to it isn't right. Don't be put off
if your patch didn't make it first time round.</P></DIV>
<DIV class=SECT1>
<HR>
<H1 class=SECT1><A name=AEN324>3.4. What is the policy on incorporating
new widgets into the library?</A></H1>
<H4 class=sect1>What is the policy on incorporating new widgets into the
library?</H4>
<P>This is up to the authors, so you will have to ask them once you are
done with your widget. As a general guideline, widgets that are generally
useful, work, and are not a disgrace to the widget set will gladly be
included.</P></DIV>
<DIV class=SECT1>
<HR>
<H1 class=SECT1><A name=AEN327>3.5. Is anyone working on bindings for
languages other than C?</A></H1>
<H4 class=sect1>Is anyone working on bindings for languages other than
C?</H4>
<P>The GTK+ home page (<A target=_top
href="http://www.gtk.org/">http://www.gtk.org/</A>) presents a list of
GTK+ bindings.</P>
<P></P>
<UL>
<LI>
<P>There are several C++ wrappers for GTK+.</P>
<P></P>
<UL>
<LI>
<P>the gtk-- package, which is a very small wrapper for GTK+. You can
find the home page at <A target=_top
href="http://www.cs.tut.fi/~p150650/gtk/gtk--.html">http://www.cs.tut.fi/~p150650/gtk/gtk--.html</A>.
The FTP site is <A target=_top
href="ftp://ftp.gtk.org/pub/gtk/gtk--">ftp://ftp.gtk.org/pub/gtk/gtk--</A>.</P>
<LI>
<P>the VDK package, which was built as the base package of a GTK+
application Borland-like builder. The home page can be found at <A
target=_top
href="http://www.guest.net/homepages/mmotta/VDKHome">http://www.guest.net/homepages/mmotta/VDKHome</A>.</P>
<LI>
<P>The wxWindows/Gtk package, a free C++ library for cross-platform
GUI development. The home page of this package is <A target=_top
href="http://www.freiburg.linux.de/~wxxt/">http://www.freiburg.linux.de/~wxxt/</A>.</P></LI></UL>
<LI>
<P>There are three known Objective-c bindings currently in
development:</P>
<P></P>
<UL>
<LI>
<P>The <A target=_top
href="http://www.gnome.org/">http://www.gnome.org/</A> package of
choice is objgtk. Objgtk is based on the Object class and is
maintained by <A target=_top href="mailto:sopwith@cuc.edu">Elliot
Lee</A>. Apparently, objgtk is being accepted as the `standard'
Objective-C binding for GTK+.</P>
<LI>
<P>If you are more inclined towards the <A target=_top
href="http://www.gnustep.org/">GNUstep project</A>, you may want to
check out GTKKit by <A target=_top href="mailto:helge@mdlink.de">Helge
He
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -