Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework a whole bunch of build stuff #1995

Closed
wants to merge 4 commits into from

Conversation

DHowett-MSFT
Copy link
Contributor

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 (cppwinrt.build.pre.props vs common.build.pre.props differs with regards to warnings #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.

@zadjii-msft
Copy link
Member

Wait, that's it? That seems way easier than I thought it should be.

I recall there was problems with mdmergeing when cppwinrt projects would binplace to bin/. Does that work now? For both clean builds and partial rebuilds?

@zadjii-msft
Copy link
Member

@DHowett-MSFT Do we still want to do this, Or should we abandon it? If 0.3 goes out cleanly, I guess that gives us another window to mess with the build, but I'd also love to not have it broken for weeks again.

  • What benefits does this get us, other than slightly cleaner project files? Does it fix something or enable something?
  • Will the release appx still work from the build pipeline?

@DHowett-MSFT
Copy link
Contributor Author

We still want this, but as part of a more holistic change that fixes #922.

@DHowett-MSFT DHowett-MSFT deleted the dev/duhowett/bunch_of_build_stuff branch January 28, 2020 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants