Building STEPcode

Required packages

 * cmake >= v2.8.7


 * As of v0.7, the following are no longer used:
 * bison
 * flex

Configuration options (append to the 'cmake ..' line):

 * -DSC_BUILD_SCHEMAS="path/to/schema.exp;path/to/schema2.exp"
 * For each schema listed, this
 * generates c++
 * compiles it into a library
 * builds a 'p21read' program (see below)
 * Will also work with directories, as long as each directory has a single express file. Multiple files/directories are separated by semicolons.
 * -DSC_BUILD_TYPE=[Debug|Release|RelWithDebInfo|MinSizeRel]
 * default is a Debug build
 * Release turns on optimizations and strips out debugging information
 * see also: cmake documentation for CMAKE_BUILD_TYPE
 * The above options can be used from the CMake GUI as well - just look through the list of variables.

Files created in build dir

 * build/src/ contains source generated by flex and bison
 * build/CMakeFiles contains temporary files (i.e. .o files)
 * build/data/SCHEMA_NAME contains source generated for schema SCHEMA_NAME
 * note that SCHEMA_NAME is the name of the express file, without the .exp extension
 * build/bin/ contains executables
 * exp2cxx
 * Generates C++ code, formerly fedex_plus
 * exp2py
 * Generates Python code, formerly fedex_python
 * exppp
 * Express Pretty Printer
 * Normally, this isn't built
 * check_express
 * Formerly fedex
 * Parses the express and checks for errors. The functionality of exp2cxx/exp2py is a superset of this.
 * p21read_sdai_SCHEMA_NAME
 * reads one step file and writes another. It may change whitespace or remove comments; otherwise, the input and output files are supposed to be identical. If they are not identical, either the file does not match the schema, or there is a bug in SCL.
 * lazy_sdai_SCHEMA_NAME
 * lazy loading test executable for SCHEMA. Prints time and memory statistics for various stages including file scanning. Loads a few instances, then exits.
 * build/lib/ contains libraries, including libs created for schemas

More options are available - see the man pages, and read comments in the various CMakeLists.txt files.