[PR #1995] Rework a whole bunch of build stuff #24749

Open
opened 2026-01-31 09:05:08 +00:00 by claunia · 0 comments
Owner

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

State: closed
Merged: No


This draft pull request contains a number of interesting changes. Let's talk about the results first.

  • All dependencies can be removed from WindowsTerminal except TerminalApp
  • All normal-build xcopy rules have been removed
  • All project build output (including the MSIX) goes in /obj and /bin.
  • Almost all build configuration between cppwinrt and non-cppwinrt projects has been unified (#1155)
  • TerminalApp no longer needs to manually include TerminalAppLib's stuff
    • It can use a normal ProjectReference
  • The package works.
  • CascadiaPackage no longer needs to include nuget packages itself
  • The application is still double-click activatable
  • PRI files are automatically rolled up
  • The package is 17MB because it includes TerminalAppLib.lib (👎)

Now, the how:

  • WindowsTerminal now defines GetPackagingOutputs, which recurses into its children (just like an appx project)
  • cppwinrt.build.pre.props now defers to common.build.pre.props for most of its configuration (and loses a bunch of redundant configuration)
  • OutDir is set before including the C++ machinery (this turned out to be important (!))
  • CascadiaPackage has been given a nudge towards including all subproject packaging outputs

This will still not work properly on Visual Studio 16.3, pending a fix for TerminalAppLib/TerminalApp that @zadjii-msft is cooking up.

**Original Pull Request:** https://github.com/microsoft/terminal/pull/1995 **State:** closed **Merged:** No --- This _draft_ pull request contains a number of interesting changes. Let's talk about the _results_ first. * All dependencies can be removed from WindowsTerminal except TerminalApp * All normal-build xcopy rules have been removed * All project build output (including the MSIX) goes in `/obj` and `/bin`. * Almost all build configuration between cppwinrt and non-cppwinrt projects has been unified (#1155) * TerminalApp no longer needs to manually include TerminalAppLib's stuff * It _can_ use a normal ProjectReference * The package works. * CascadiaPackage no longer needs to include nuget packages itself * The application is still double-click activatable * PRI files are automatically rolled up * The package is 17MB because it includes TerminalAppLib.lib (👎) Now, the how: * WindowsTerminal now defines `GetPackagingOutputs`, which recurses into its children (just like an appx project) * `cppwinrt.build.pre.props` now defers to `common.build.pre.props` for most of its configuration (and loses a bunch of redundant configuration) * `OutDir` is set _before_ including the C++ machinery (this turned out to be important (!)) * CascadiaPackage has been given a nudge towards including all subproject packaging outputs This will still not work properly on Visual Studio 16.3, pending a fix for TerminalAppLib/TerminalApp that @zadjii-msft is cooking up.
claunia added the pull-request label 2026-01-31 09:05:08 +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#24749