Skip to content

CPack: Add NuGet support

Alex Turbov requested to merge zaufi/cmake:feature/CPack-NuGet into master

What is NuGet?

In fact, NuGet packages could be easily produced from a *.nuspec file (running nuget pack in the directory w/ the spec file). The spec filename does not affect the result *.nupkg name -- only id and version elements of the spec are used (by NuGet).

Some implementation details:

  • Minimize C++ code -- use CMake script do to the job. It just let the base class (cmCPackGenerator) to preinstall everything to a temp directory, render the spec file and run nuget pack in it, harvesting *.nupkg files...;
  • Ignore package name (and use default paths) prepared by the base class (only CPACK_TEMPORARY_DIRECTORY is important) -- final package filename is a responsibility of NuGet, so after generation just scan the temp directory for the result *.nupkg file(s) and update packageFileNames data-member of the generator;
  • The generator supports all-in-one (default), one-group-per-package and one-component-per-package modes.

Topic-rename: cpack-nuget

Edited by Brad King

Merge request reports