[PR #3429] Unify and clean up the common build properties #25367

Closed
opened 2026-01-31 09:09:04 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/3429

State: closed
Merged: Yes


Summary of the Pull Request

This commit cleans up and deduplicates all of the common build
preamble/postamble across exe, dll, lib and c++/winrt projects.

The following specific changes have been made:

  • All projects now define their ConfigurationType
  • All projects now set all their properties before including a common
    build file (or any other build files)
  • cppwinrt.pre and cppwinrt.post now delegate most of their
    configuration to common.pre and common.post
  • (becuase of the above,) all build options are conserved between
    console and c++/winrt components, including specific warnings and
    preprocessor definitions.
  • More properties that are configurable per-project are now
    conditioned so the common props don't override them.
  • The exe, dll, exe.or.dll, and lib postincludes have been merged into
    pre or post and switched based on condition as required
  • Shared items (-shared, -common) are now explicitly vcxitems instead of
    vcxproj files.
  • The link line is now manipulated after Microsoft.Cpp sets it, so the
    libraries we specify "win". All console things link first against
    onecore_apiset.lib.
  • Continues the tradition of naming PDB files xxxFullPDB, but I can't tell why we did that so this may be cargo cultism (I had to make the Cascadia projects follow that rule)

Fixes #922.

PR Checklist

**Original Pull Request:** https://github.com/microsoft/terminal/pull/3429 **State:** closed **Merged:** Yes --- ## Summary of the Pull Request This commit cleans up and deduplicates all of the common build preamble/postamble across exe, dll, lib and c++/winrt projects. The following specific changes have been made: * All projects now define their ConfigurationType * All projects now set all their properties *before* including a common build file (or any other build files) * cppwinrt.pre and cppwinrt.post now delegate most of their configuration to common.pre and common.post * (becuase of the above,) all build options are conserved between console and c++/winrt components, including specific warnings and preprocessor definitions. * More properties that are configurable per-project are now conditioned so the common props don't override them. * The exe, dll, exe.or.dll, and lib postincludes have been merged into pre or post and switched based on condition as required * Shared items (-shared, -common) are now explicitly vcxitems instead of vcxproj files. * The link line is now manipulated after Microsoft.Cpp sets it, so the libraries we specify "win". All console things link first against onecore_apiset.lib. * Continues the tradition of naming PDB files `xxxFullPDB`, but I can't tell why we did that so this may be cargo cultism (I had to make the Cascadia projects follow that rule) Fixes #922. ## PR Checklist * [x] Closes #922 * [x] CLA signed. * [x] Tests added/passed/project built a bunch * [ ] Requires documentation to be updated * [x] Core contributor
claunia added the pull-request label 2026-01-31 09:09:04 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#25367