如何为本机C ++创建nuget包

时间:2016-08-02 19:05:10

标签: c++ visual-studio-2015 nuget

我想发布关于sdl_mixer的包,它是一个原生包。我按tutorial说。我将.dll .h.lib个文件放入 包内容 ,但最终的包没有用。所以创建c ++ nuget包的正确方法是什么?

另一个问题是我在nuget中发现,大多数原生c ++包都发布在两个包中,例如:

  

sdl2_ttf.v140

     

sdl2_ttf.v140.redist

那么这两个文件有什么区别?我怎样才能发布这样的包呢?

---------------------------------------更新------- -----------------------------

当我喜欢教程时说如何发布原生包.i已写成如下autopkg file

 

nuget{
    nuspec {
        id = MySdl_mixer;
        version :2.0.0.0;
        title: sdl mixer;
        authors: { Sam Lantinga, Stephane Peter, Ryan Gordon};
        owners: {spartawhy117};
        licenseUrl: "http://libsdl.org/license.php";
        projectUrl: "http://libsdl.org/index.php";
        iconUrl:"";
        requireLicenseAcceptance:false;
        summary:Nothing;
        description: @"SDL_mixer is a sample multi-channel audio mixer library.... 
    ";
       releaseNotes: "Release of C++ ";
       copyright:Copyright 2015;
       tags: {v140 ,sdl_mixer , native, CoApp };
};

    files {
        #defines {
            Include = include\;
            Bin = bin64\;
            Lib = lib64\;
        }

        include:{"${Include}*"};

        [x64,v140,debug,desktop]{
            lib: ${Lib}SDL2_mixer.lib;
            bin: ${Bin}SDL2_mixer.dll;
        }
        [x64,v140,release,desktop]{
            lib: ${Lib}SDL2_mixer.lib;
            bin: ${Bin}SDL2_mixer.dll;
        }
     };
    targets {
            Defines += HAS_SDLMIXER;
     };

}

运行命令后

  

Write-NuGetPackage。\ sdl_mixer.autopkg

它返回错误:结束的意外输入。那有什么问题?

2 个答案:

答案 0 :(得分:2)

您可以使用CoApp PowerShell tools轻松创建Native Nuget包。

  

创建原生资料套件

     

如果您有兴趣发布您的   通过NuGet本地库,您可以选择创建NuGet   手动打包。但是,有一种更简单的方法 - CoApp项目   自愿编写面向C ++的工具来创建NuGet包,以及   他们已经发布了他们工具的测试版。这些工具简化了   从中生成MSBuild文件和NuGet包的过程   现有的头文件和库文件 - 你只需要创建一个   配置脚本来描述包的内容然后   运行工具来生成NuGet包。

有关详细信息,请参阅此链接:Support for Native Projects.

答案 1 :(得分:0)

我搜索了几天,直到发现互联网上确实没有任何帮助。我确实设法将其拼凑起来,并且通过反复试验使它运行良好。我在这里记录过:

https://digitalhouseblog.wordpress.com/2019/08/22/how-to-make-a-nuget-package-for-c/

但我还是在这里总结一下:

  • 将本机库文件收集或分段到您的文件夹中 选择。
  • 在该文件夹中创建一个* .nuspec文件。
  • 编辑* .nuspec文件以包括要包含在软件包中的文件。
  • 创建一个* .props文件
  • 调用nuget pack创建包。
  • 将nuget包推送到某处的feed中。
  • 创建一个packages.config文件。
  • 编辑Visual Studio项目文件以导入* .props文件

请注意,永远不要使用Visual Studio IDE中的nuget工具。您必须手动执行很多。有关完整的详细信息和说明,请参见链接。