Pre- and Post-Build Scripts

EBuild projects may specify custom shell scripts to run before the main build process for the project starts, or after it (successfully) finishes. These scripts can be provided in a <PreBuild> or <PostBuild> element, respectively, on the top level of the project XML.

For backward compatibility with MSBuild, the <PreBuildEvent> or <PostBuildEvent> element names may be used instead.

Since Elements projects can be built on different platforms, and each platform has a different shell environment, separate <PreBuild> or <PostBuild> tags can be provided, each specifying a platform or – on Windows – a shell to run in (Cmd vs PowerShell).

EBuild will pick the scripts marked for the current platform, and the scripts that have no platform marker:

  <PreBuild Configuration="'$(Platform)=='macOS'">
    ls -la
  </PreBuild>
  <PreBuild Configuration="'$(Platform)=='Cmd'">
    dir
  </PreBuild>

Valid values for the "Platform" attribute are:

OS Values Comment
Windows Windows, Cmd, PowerShell Runs cmd.exe, except for PowerShell
macOS Mac, macOS, sh Always runs /bin/sh
Linux Linux, sh Always runs /bin/sh

The script will run with the project folder (i.e. the folder containing the .elements file) as the current working directory.

Variables

Any settings known to the project can be used in the script, using the $(SettingName) syntax. Literal occurences of $( can be escaped using a second dollar sign: $$(.

  <PreBuild>
    echo "$(BinaryName)"
  </PreBuild>