Module cargo::ops::cargo_compile

source ·
Expand description

The Cargo “compile” operation

This module contains the entry point for starting the compilation process for commands like build, test, doc, rustc, etc.

The compile function will do all the work to compile a workspace. A rough outline is:

  • Resolve the dependency graph (see ops::resolve).
  • Download any packages needed (see PackageSet).
  • Generate a list of top-level “units” of work for the targets the user requested on the command-line. Each Unit corresponds to a compiler invocation. This is done in this module (UnitGenerator::generate_root_units).
  • Build the graph of Unit dependencies (see unit_dependencies).
  • Create a Context which will perform the following steps:
    • Prepare the target directory (see Layout).
    • Create a job queue (see JobQueue). The queue checks the fingerprint of each Unit to determine if it should run or be skipped.
    • Execute the queue. Each leaf in the queue’s dependency graph is executed, and then removed from the graph when finished. This repeats until the queue is empty.

Note: “target” inside this module generally refers to “Cargo Target”, which corresponds to artifact that will be built in a package. Not to be confused with target-triple or target architecture.

Re-exports

Modules

Structs

  • Contains information about how a package should be compiled.

Functions