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
Profilesby 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§
- Debug
Info - The debuginfo level setting.
- Lto
- The link-time-optimization setting.
- Panic
Strategy - The
panicsetting. - Profile
Root - The root profile (dev/release).
- Strip
- The setting for choosing which symbols to strip.
- Strip
Inner