创建c++的nuget库

4 篇文章 0 订阅

创建c++的nuget库

准备coApp

通过coApp可以快速的创建c++的nuget包,首先下载coApp(http://coapp.org/pages/releases.html

安装后最好重启以确保环境变量生效

编译

将需要打包的库使用vs编译器编译成二进制文件,将头文件、lib文件、dll文件(动态库)分别存好,注意如果要想nuget包支持多种平台(x64、x86)、多种编译器*(v120、v140)要用指定的选项分别编译。

打包脚本

打包脚本是一个.autopkg文件
示例如下:


@import @"version.inc";

nuget {
    nuspec {
        id = sample;
        version : ${package-version};
        title: sample;
        authors: cvter};
        owners: {CoApp Project, cvter};
        licenseUrl: "http://sample/sample-LICENSE.txt";
        projectUrl: "http://x.gz.cvte.cn/sample";
        iconUrl: "http://sample.org/sample.jpg";
        requireLicenseAcceptance:false;
        summary: @"this is a sample for cvte native nuget.
        Homepage: http://www.sample.org";
        releaseNotes: "Release of sample 0.0.1 libraries.";
        copyright: Copyright 2016;
        tags: { sample, native, CoApp };

    };

    files {
        include: {
            ..\sample\sample.h,
            };

        docs: { ..\readme.txt };

        source += {
            ..\sample\*.cpp,
            ..\sample\*.h,
            ..\sample\include\*.h,
        };

        [Win32,v120,dynamic,release] {
            lib: { ..\Release\sample.lib };
            bin: { ..\Release\sample.dll };
            symbols: { ..\Release\sample.pdb };
        }
        [Win32,v120,dynamic,debug] {
            lib: { ..\Debug\sample_d.lib };
            bin: { ..\Debug\sample_d.dll };
            symbols: { ..\Debug\sample_d.pdb };
        }
    };

    /*
    dependencies {
        packages : {
            sample2/0.0.2
        };
    }
    */
}

示例脚本基本囊括了常用的选项,只需要在此基础上稍作改动即可。

版本

同目录下的version.inc文件存放了版本信息,文件内容只有如下一行:

#define { package-version: 0.0.1; } 

nuspec

nuspec节中说明了nuget包的基本信息,做相应的修改即可。注意id是唯一标识,不能和其他的包重复。
tags中的native是约定俗成的c++库的标志。

files

include节指定头文件
docs节指定文档文件
source节指定源文件
lib节指定lib文件
bin节指定dll文件
symbols节指定pdb调试文件
其中的路径都是相对当前.autopkg脚本而言的。
其中可以给指定节添加使用条件
如示例中[Win32,v120,dynamic,debug]指定了32位平台、使用vs2013、动态库的Debug版。
其中有以下可选选项:
- 平台

可选项说明
win3232位程序
x6464位程序

- 编译器

可选项说明
v110vs2012
v120vs2013
v140vs2015
……其他vs版本的版本号请自行查询

- 库类型

可选项说明
dynamic动态库
static静态库

- 编译选项

可选项说明
Debug调试版
Release发行版

这些选项非必选项,如果不写那么就是不针对次选项做适配。不过还是建议这是设置这些选项。

dependencies

dependencies标识依赖的其他nuget包,格式是:
包id/ 包版本号
如果要使用此选项请取消示例中的注释才能生效。

打包

coApp是一个PowerShell工具,所以首先进入PowerShell,进入到脚本目录,然后输入命令。
Write-NuGetPackage .\sample.autopkg (脚本名替换成自己的脚本名)
如果遇到PowerShell权限问题,请自行查询权限错误信息解决
打包通常后会生成3个包。
- 通用包:包含头文件、文档、lib文件
- redist包:包含dll文件
- symbols包:包含源码和调试信息文件

而通用包会自动依赖redist包,所以我们使用的时候只需要安装通用包即可。symbols包在需要调试源码的时候使用。

上传

c++的nuget包和普通的nuget包上传是一样的。网上有很多资料,所以在此就不赘述了。

更加复杂的脚本

本文中的脚本只包含了通用的功能,更多详细高级用法,请参考coApp官网文档(官网文档很少),或者可以参考github上coApp官方制作的一些脚本。coApp官方将一些常见的开源项目已经制作成了nuget包,这些项目的打包脚本都可以在github上找到。
coApp组织的github地址(https://github.com/coapp-packages),里面有很多项目,打包脚本通常在CoApp分支的copkg文件夹中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值