Skip to content
  • Alex Turbov's avatar
    CPack: Add NuGet support · f739752a
    Alex Turbov authored and Brad King's avatar Brad King committed
    Create a CPack generator that uses `nuget.exe` to create packages:
    
        https://docs.microsoft.com/en-us/nuget/what-is-nuget
    
    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.
    f739752a