Build Artefacts

The output of the build process appears under the build artefacts folder:

  (build artefacts)
    ├── build
    ├── export
    ├── include
    └── lib

Three of these subfolders are specifed by the following variables defined in base.xcpp which is an xcpp configuration file.


$EXPORT_LIB = "../lib"
$EXPORT_TRANSLATED_INCLUDE = "../include"
$EXPORT_UNTRANSLATED_INCLUDE = "../export"

The output of the build is written to a separate area which doesn’t overlap with the input. i.e. it is assumed that the build artefacts folder isn't contained within any of the physical trees specified in the input virtual tree.

The build artefacts folder contains the following subfolders:

Folder Description
build Holds the generated project and solution files (e.g. vcxproj anf sln files for Microsoft Visual Studio when targeting Windows), and intermediate files such as object files and precompiled headers
export Holds the exported public header files, project files and workspace files which are needed for chained builds. The public header files may be expressed in the Xc++ language.
include Holds the exported public header files in pure C++. The public header files of libraries written in the Xc++ language are translated into pure C++, so they are available for pure C++ projects.
lib Holds the exported binaries for libraries and executables which are needed for chained builds

The export, include and lib folders are intended to be packaged in a release of a set of projects in a workspace.

Build and export directories

In order to build a ceda workspace the following must be given:

  1. The logical path of the .xcws workspace file
  2. A virtual tree (defined by an ordered list of paths to physical trees), treated as the input for the build process.
  3. The path to the build directory (used for all generated intermediate files that are output by the build process)
  4. The path to the export directory, used to store the useful output of the build process.

This information on a given development machine corresponds to a particular build environment.

For a given solution, the output of the build is written to either the build directory to hold the intermediate build files, or else the export, include and lib folders to hold the output files of the build that are packaged in a formal release.

The build directory contains intermediate build files such as .obj and .pch files. To avoid name clashes .obj files are organised under directories according to project name, platform and configuration. It is assumed that filenames are unique within a given project but not across projects.

Since the .vcproj and .sln files are calculated they are also treated as intermediate files to be stored in the build directory.