$G

From VrlWiki
Jump to navigation Jump to search


Note: in December 2008 Bradley Berg began redesigning $G and the documentation on the transition can be found here. The old $G is deprecated and will eventually be replaced by Brad's system.

$G in principle

GfxTools a.k.a $G is a software development framework for keeping projects organized and usable over time. Several of its key goals are:

  1. Standardization - using a common development framework makes it a lot easier for folks within our group to pitch in with development, use tools others have created, pick up someone else's project after he/she graduates, and make sure that your own project lives on after you graduate.
  2. Dependable demos and software libraries - $G provides an environment where software libraries and demos can be installed and used by the group.
  3. Easy cross-platform development - $G utilizes the same software organization and Makefiles across multiple development platforms.
  4. Source control for software projects - $G uses CVS to manage source projects.

$G in practice

Here's how $G works: Whenever you start a shell, the environment variable "G" is set to point to the root of the $G directory tree. To change directories to go there, you would type "cd $G", hence the name "$G". The directory that $G points is actually different depending on the architecture of the machine that you are on, this means that you can trust that everything within $G/bin will run on your machine. Likewise, libraries in $G/lib are compiled for your machine/OS, etc..

There is a Unix-like directory structure within $G. Here's a description of the directories you will find inside each architecture specific $G tree:

  • $G/bin: Installed executables and scripts.
  • $G/data: A symlink to a data directory that is common amoung all the $G trees. Sci-vis data is organized and stored inside here.
  • $G/doc: Project documentation in non-man format. Typically, html generated from javadoc or doxygen, README files for demos, etc..
  • $G/help: Contains $G specific documentation, like this webpage.
  • $G/lib: Installed libraries, shared libraries, and program resource files like config files, icons, sounds, etc.. inside project specific subdirectories.
  • $G/man: Project documentation in unix man page format.
  • $G/src: CVS controlled projects in subdirectories.

While this page is under construction, you might find the old online $G doc useful.