[go: up one dir, main page]

Module profiles

Module profiles 

Source
Expand description

Handles built-in and customizable compiler flag presets.

Profiles is a collections of built-in profiles, and profiles defined in the root manifest and configurations.

To start using a profile, most of the time you start from Profiles::new, which does the followings:

  • Create a Profiles by merging profiles from configs onto the profile from root manifest (see [merge_config_profiles]).
  • Add built-in profiles onto it (see Profiles::add_root_profiles).
  • Process profile inheritance for each profiles. (see Profiles::add_maker).

Then you can query a Profile via Profiles::get_profile, which respects the profile overridden hierarchy described in below. The Profile you get is basically an immutable struct containing the compiler flag presets.

§Profile overridden hierarchy

Profile settings can be overridden for specific packages and build-time crates. The precedence is explained in [ProfileMaker]. The algorithm happens within [ProfileMaker::get_profile].

Structs§

Profile
Profile settings used to determine which compiler flags to use for a target.
Profiles
Collection of all profiles.
UnitFor
Flags used in creating Units to indicate the purpose for the target, and to ensure the target’s dependencies have the correct settings.

Enums§

DebugInfo
The debuginfo level setting.
Lto
The link-time-optimization setting.
PanicStrategy
The panic setting.
ProfileRoot
The root profile (dev/release).
Strip
The setting for choosing which symbols to strip.
StripInner