GPSTk Directory Structure

The core of the GPSTk is the library, in which the source is located in the subdirectories of dev/lib. This directory contains classes, algorithms, and data structures that are fundamental to GNSS processing. This the the heart of the GPSTk and contains the classes that serve as the foundation for developing GNSS applications. The core library should compile on any system with a compiler that conforms to ISO-standard C++.

Finally, the GPSTk project provides a number of applications that provide basic and advanced GNSS processing. The GPSTk applications (which may be platform dependent) are organized in logical groupings in the dev/apps subdirectory. The GPSTk source directory structure is illustrated in the figure below. (Note that this is the structure in the Git repository. In a tar of a specific release, the dev directory is replaced by a release specific name like gpstk2.3.)

The guidelines for adding to the dev/lib and the dev/apps directory are similar. Anything that is related to GNSS is acceptable. The intent is to encourage experimentation and development of new ideas. No files are directly placed in dev/lib or dev/apps and subdirectories are created to group related items. Subdirectories can have dependencies upon third party libraries and platform specific extensions. These subdirectories of dev/lib may not depend upon anything in dev/apps. Subdirectories in dev/apps may depend on anything in the GPSTk. More importantly, nothing in the core GPSTk library may depend upon items in dev/apps. This last point is imperative to maintain the portability and broad support of the GPSTk core library.

While anything GNSS related can be added under the dev/lib or dev/apps directories, the same is not true of the build process. It should only include items that will generally compile. To facilitate compiling the items in the new directory, the build will recurse into dev/lib and dev/apps by default. Subdirectories that are located in dev/lib or dev/apps will be built when the build is invoked from the dev directory. While this guidance is somewhat vague, it does imply that the author is intending to keep the build from breaking under the common platforms that the GPSTk is used under (Solaris/gcc, Linux/gcc, OS X/Clang, Windows/VC++). While the default build process will not recurse into every directory in dev/apps, individual directories may be built and installed manually. This is how applications that are platform specific are built and installed.