使用cmake安装nuget
使用cmake安装nuget
目前在vs上c++项目对第三方库的引用通过nuge来引用。但是一些跨平台项目使用cmake构建,cmake生成脚本中没有提供nuget的支持。
使用nuget本质就是导入了一个从服务器上下载的targets文件,cmake3.8支持了向项目中添加targets文件。所以可以借助这一特性间接的使得cmake脚本支持nuget。
本文章所述内容必须要使用cmake3.8及以上才有效
思路
使用nuget本质就是在项目配置里导入了一个从服务器上下载的包中的targets文件,那么只要使用CMAKE脚本完成这些步骤就行。
首先nuget.exe命令行程序是可以下载指定的包的,那么只要在cmake脚本中调用nuget下载包后把包中的targets文件导入项目就行。
cmake脚本中执行其他程序需要使用execute_process
命令
cmake中导入targets文件需要使用target_link_libraries
命令
实现
为方便现将安装nuget的功能整理封装成一个cmake宏,可单独存放在一个cmake文件中在其他脚本中用include
命令包含方便调用。
cmake_minimum_required(VERSION 3.8)macro(INSTALL_NUGET target id version)if (CMAKE_GENERATOR MATCHES "Visual Studio.*")unset(nuget_cmd)list(APPEND nuget_cmd install ${id} -Prerelease -Version ${version} -OutputDirectory ${CMAKE_BINARY_DIR}/packages)message("excute nuget install:${nuget_cmd}")execute_process(COMMAND nuget ${nuget_cmd} ENCODING AUTO)target_link_libraries(${target} ${CMAKE_BINARY_DIR}/packages/${id}.${version}/build/native/${id}.targets)else()message(FATAL_ERROR "INSTALL_NUGET noly use in Visual Studio")endif()endmacro()
宏的名字是INSTALL_NUGET ,接收三个参数,第一个是需要安装nuget的目标,第二个是包的id,第三个是包的版本。
逻辑:
- 声明cmake最低版本
- 判断是否是vs平台,否则给提示结束
- 根据参数拼接出nuget的命令行参数。
- 下载nuget包到cmake运行目录下的packages目录。
- 将下载的包中的targets文件导入项目
使用示例:
ADD_LIBRARY(Framework STATIC ${SRC_FILES})
INSTALL_NUGET(Framework boost.native.static.v140.md 1.5.9-beta)
注意
使用此方法管理nuget后,所有对nuget的管理都只能在cmake脚本中改动。不能使用vs中的nuget插件来管理nuget。
使用cmake安装nuget相关推荐
- Centos6.0 64位MySQL 5.5.20 CMake 安装部署
Centos6.0 64位下 MySQL 5.5.20 CMake 安装部署 一.下载所需软件 linux用 wget 下载需要的软件,保存到目录 /usr/local/src 下 wget ftp: ...
- centos7 cmake安装mysql_centos7 安装cmake
在CentOS安装CMake (CentOS7 64位适用) 在CentOS安装CMake 转自:http://www.cnblogs.com/mophee/archive/2013/03/19/29 ...
- OpenCV+Qt+CMake安装+十种踩坑
平台:win10 x64+opencv-3.4.1 + qt-x86-5.9.0 + cmake3.13.4 x64 OpenCV+Qt+CMake安装,及目前安装完后打包:mingw32-make时 ...
- OpenCV:使用git和cmake安装Tesserac
OpenCV 使用git和cmake安装Tesseract 使用git和cmake安装Tesseract 使用git和cmake安装Tesseract 1.我们假设您在c:/ lib中安装了openc ...
- linux cmake 安装mysql5.5.11,以及更高版本
今天下了一个mysql5.5.12,安装的时候才发现里面根本没有configure文件,mysql服务器的安装,我都不知道自己装过多少次了,没有这个怎么编译,上网查了一下,原来要用cmake来安装.下 ...
- 使用 nuget server 的 API 来实现搜索安装 nuget 包
使用 nuget server 的 API 来实现搜索安装 nuget 包 Intro nuget 现在几乎是 dotnet 开发不可缺少的一部分了,还没有用过 nuget 的就有点落后时代了,还不快 ...
- cmake 安装mysql5.6_CMAKE安装MYSQL 5.6.10
mysql5.6.10不支持configure安装了,提供了CMAKE安装方式 #sudo groupadd mysql #sudo useradd mysql -g mysql #sudo mkdi ...
- Win10中docker安装nuget服务器及使用
目录 简介 具体实现 创建容器 上传包 如何使用 总结 推荐阅读 简介 如果你了解python,那么它类似pip.如果你了解nodejs,那么它类似npm.对于.net平台,nuget就是python ...
- cmake安装配置及入门指南
前言 今天,从github下载代码学习,让我用cmake编译,纳尼?make我知道,cmake是啥鬼?天啊,无知很可怕!赶紧mark一波,虽然很耽误学习进度,但感觉还是要get一波! 一.安装准备 感 ...
最新文章
- ios app证书申请基本流程
- 【005】◀▶ C#学习笔记(四)(集合)
- 【PAT乙级】1047 编程团体赛 (20 分)
- VTK:Filtering之TriangulateTerrainMap
- 通过Java Api与HBase交互(转)
- Vue--- 一点车项目
- 码农即将被淘汰?未来10年,这样的程序员才值钱!
- 漫步数理统计十七——条件分布与期望
- 【华为云技术分享】【极客思考】设计模式:你确定你真的理解了单例模式吗?
- sql实现从两个表获取字段组成表数据再插入到函数表中
- android 盒子刷 下载,一加5刷机盒子
- studioone机架效果模板_studioone3机架效果包
- ubuntu生成pem证书连接服务器(已验证)
- AD15的PCB设计流程及基本设置
- mysql临时表创建_MYSQL临时表创建索引
- 荣耀8x手机换电池实战
- UniApp已经接了手机数据线,但运行工具警告 “没有检查到设备“ (华为手机为例 进行解决)
- 【shell】shell-判断两个ip是否在同一个网段
- 【触摸屏功能测试】昆仑通态MCGS——物联网功能测试
- netlink怎么读_跑长途的时候如何不寂寞,车机互联G-Netlink全解说明
热门文章
- city-picker的使用
- w10重装最简单的一个方法
- linux查看网口流量ifconfig,ifconfig与网络流量监控
- Java找到1-1000以内所有可以被3整除并可以被7整除的数。
- Map array 和 array
- Python深度学习13——Keras模型的可视化(神经网络结构图)
- Java使用Aspose组件进行多文档间的转换操作
- 不同意安装条款就没法使用?新法规对APP霸王条款说“不”
- [VB.NET]想做一个小界面,不知用什么做
- Linux系统中端口映射是什么意思?