NOTE: This file is out of date. Please refer to http://www.mono-project.com/GAPI for a more complete and up-to-date guide to the GAPI tools included with Gtk# How to use the Gtk# code generator: Install dependencies: * You need to install the XML::LibXML perl bindings and Gtk#. Parse the library: * Create an xml file defining the libraries to be parsed. The format of the XML is: atk-1.2.4/atk The api element filename attribute specifies the parser output file location. The name attribute on the library output points to the native library name. If you are creating a cross-platform project, you will want to specify the win32 dll name here and use mono's config mechanism to map the name on other platforms. The dir element points to a src directory to be parsed. Currently all .c and .h files in the directory are parsed. All the elements inside the root can have multiples. The source/gtk-sharp-sources.xml file has examples of producing multiple api files with a single parser input file, as well as including muliple libraries in a single output file. * Create metadata rules files named .metadata in the directory where you invoke the parser. Metadata rules allow you to massage the parsed api if necessary. Examples of rule formats can be found in the sources directory. * Execute the parser on your xml input file: gapi-parser * Distribute the xml file(s) produced by the parser with your project so that your users don't need to have any native library source, or perl libraries installed in order to build your project. Within your project directory, do the following: * Setup a toplevel subdirectory for each namespace/assembly you are wrapping. Instruct the makefile for this directory to compile, at minimum, generated/*. * Run gapi_codegen.exe on the API file(s) you created with the parser. If you depend on any other wrapped libraries (such as gtk-sharp.dll), you need to include their API listings via the --include directive. The code generator, if successful, will have populated the assembly directories with generated/ directories. It is generally helpful to automate this process with makefiles. Gtk# uses the following organization: - sources/: Source directories, .sources listing, .metadata files. developers run make manually here when they want to update the API files. - api/: API files The files are committed to CVS and included in releases for the convenience of the lib user. This dir is included in the build before the namespace dirs and the generator is invoked from this dir.