使用nuget管理c++库的原理
来源:互联网 发布:泰语翻译中文软件 编辑:程序博客网 时间:2024/05/17 06:03
使用nuget管理c++库的原理
简介
通常使用c++库需要在项目配置里设置头文件包含路径和链接路径。所以不同于c#库直接将文件放在指定位置就可以使用。
nuget指定了一系列的特殊目录,用来管理包的内容,但是并不能管理c++库,nuget自从2.5后开始支持管理c++库。为此特意规定了一个build目录,build目录中可以通过使用msbuild脚本来达到自动配置路径的效果,从而可以使用c++库。
原理
目录结构
nuget包下的build目录中按照平台来划分子目录,但是c++库统一设为native平台,所以只有一个native目录。native下面有一系列的目录,存放着库的文件,例如头文件、lib文件、dll之类的。并且根据配置不同,会分别存放多个版本(Debug、Release、x86,x64之类)的文件。
通常目录结构是这样的
xxx.1.0.nupkg └─xx.1.0.nuspec └─build └─native ├─bin │ └─Win32 │ └─v120 │ └─dynamic │ ├─Debug │ │ └─xx_d.dll │ └─Release │ └─xx_d.dll ├─include │ └─xx.h └─lib │ └─Win32 │ └─v120 │ └─dynamic │ ├─Debug │ │ └─xx_d.lib │ └─Release │ └─xx_d.lib └─xx.targets
脚本
nuget管理器使用包的时候会寻找native下面和包名一样的.targets文件。并把他包含到项目的工程文件(.vcxproj)中。.targets文件是一个msbuild脚本,通常里面会自动设置头文件包含路径和链接路径、并且设置对应版本的链接库,最后将对应版本的dll自动复制到生成目录里面。
打包
然后填写好.nuspec文件中的描述信息后就可以使用nuget命令打包,然后发布后就像正常的nuget包一样使用。使用nuget包来引用c++库后不需要再做任何额外的设置,只需要安装nuget包就可。
coApp
虽然看起来制作一个c++库的nuget包很简单,但是编写一个合格的targets文件仍然是一件极其复杂的事。所以通常我们使用一个开源的powershell工具coApp(http://coapp.org/)来帮助我们自动完成这一切。
- 使用nuget管理c++库的原理
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 使用 NuGet 管理项目库
- 手把手教你----使用Nuget管理自己的项目库
- 使用NuGet管理自己的包
- .NET 使用 NuGet 管理项目库
- 【VS开发】使用 NuGet 管理项目库
- 使用NuGet管理程序包
- 使用Nuget管理dll
- 使用Nuget管理dll
- 使用Nuget管理dll
- Nuget管理我们的类库
- Nuget如何管理我们的类库?
- 底层并发 API
- r文件丢失
- Tomcat的新一代连接池jdbc-pool及实现分析
- WebRTC的优缺点
- redis几种启动方式
- 使用nuget管理c++库的原理
- java IO之文件输入输出流
- git ssh: connect to host gitub.com port 22解决办法
- Python及科学计算库的安装
- 网页跳转:重定向与转发
- 使用async 和 defer 属性异步加载执行JavaScript
- Apache下部署静态项目
- Eclipse导出doc文档以及编码 GBK 的不可映射字符
- 关于8位有符号位范围的问题