Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Targets are automatically identified and built based on source files in the package directories
  • Libraries that targets need from other packages are automatically added during the linking of the targets
  • A release wide include directory is set up.  Package headers are prefixed by package names to avoid file name collisions
  • A release wide location for applications and libraries is created
  • Release wide directories for data and web are set up with links to package data and web files.
  • Circular dependencies between packages are identified.  Errors are raised to stop the build in these cases.

...

to use the same version of python that the release uses.

The way functions are used from other packages to simple #include the appropriate header When C and C++ code includes a header file, it needs to be qualified by the package name. To use functions in the packageA library, files in packageB (as well as packageA itself) would do

...

The build directory includes all intermediate files. Note - no compiled code is put in the package directories. It all goes into the release/build directory.

Package data and web directories

The same mechanism used to share package header files is also done for package data and web directories. That is, if one had the files:

Code Block

release/packageA/data/data_fileA
release/packageB/web/introB.html

after running scons, the following directories would be created:

Code Block

release/data
release/web

and within those directories, the following softlinks

Code Block

release/data/packageA -> release/packageA/data
release/web/packageB  -> release/packageB/web

As with the directory release/include, do not create or put anything in release/data or release/web as they are cleaned out and recreated during an scons build.

Useful Switches and Build Options

...