本文介绍在Visual Studio中,通过属性表,使得一个新建解决方案中的项目可以快速配置已有解决方案的项目中各类已编译好的C++第三方库的方法。

  例如,我们现有一个解决方案,其中的一个项目需要调用ArmadilloOpenCV等多个不同的C++第三方库;我们也已经在这一项目中配置好了所需的各个第三方库,如下图所示。

  随后,我们新建了一个解决方案,且这一解决方案中的一个新的项目需要同样需要调用前述项目ArmadilloOpenCV等多个不同的C++第三方库。如下图所示,由于此时我们还没有对新的项目进行第三方库的配置,因此在#include代码中会有报错信息存在。

  针对这一新的项目,我们可以参照文章如何在Visual Studio新C++项目中调用之前配置过的库?中提及的方法,分别对新项目的附加包含目录附加库目录附加依赖项等3个属性加以配置。然而,这样手动配置一次还好,如果今后还会有多个新的项目需要配置同样的第三方库,那么每一次都手动配置就显得十分麻烦。因此,我们可以借助Visual Studio中的属性表,完成这一操作。

  首先,我们需要在原有的项目(也就是已经配置好各类第三方库的项目)中,选择“视图”→“其他窗口”→“属性管理器”选项,如下图所示。

  随后,在“解决方案资源管理器”附近,找到“属性管理器”,并双击项目名称将其展开;随后,基于我们代码需要运行的环境属性(比如Release还是DebugWin32还是x64),将对应的属性信息展开,并右键选择“添加新项目属性表...”。如下图所示,我这里因为希望在Debug版本的x64环境下运行代码,因此就选择在这一环境属性信息对应处右键。

  这里再提一句,如下图所示,我们也可以选择直接在项目名称处右键;但建议大家还是按照实际需求来。

  这样的话,通过我们后续的操作,就会在每一个环境属性信息对应的栏目下出现属性表;如下图所示。

  我们继续前述操作。在选择“添加新项目属性表”后,会弹出“添加新项”窗口;我们在其中配置.props格式的属性表文件的名称与保存路径即可。

  此时,就可以在Debug版本的x64环境对应的一项中,找到我们刚刚创建的属性表,并双击。

  随后,即可弹出属性表的属性页;如下图所示。可以看到,其实这个属性表的属性页就是我们常用的项目的属性窗口

  此时我们要做的,就是将原有项目(也就是已经配置好各类第三方库的项目)的附加包含目录附加库目录附加依赖项等3个属性,复制到属性表的属性页中。这3个属性的位置具体可以参考文章如何在Visual Studio新C++项目中调用之前配置过的库?

  复制的时候这里也有几个小技巧。首先,我们可以在打开属性表的属性页(或项目的属性页)时,通过切换“解决方案资源管理器”与“属性管理器”的选中状态,无缝切换两个属性页窗口。

  此外,我们可以在原有项目的附加包含目录附加库目录中,通过复制“计算的值”窗口中的内容,实现跨行批量复制,如下图所示。

  然后首先将其复制到文本文件、Word文档文件等作为中转,再将其逐行粘贴值属性表的对应位置处;下图即为复制后的属性表的附加库目录

  而对于附加依赖项,由于其不是一行一行来设置的,因此复制起来就更快一些。

  完成对附加包含目录附加库目录附加依赖项等3个属性的复制工作后,一定记得需要在属性表名称处右键,将其保存。

  随后,我们打开新的项目,也就是待配置第三方库的项目,同样打开“属性管理器”。

  随后,在对应的环境属性一栏中,右键并选择“添加现有属性表...”选项。

  随后,找到我们刚刚配置好的.props格式的属性表文件,并选择。

  此时,在新项目的属性管理器中,就可以看到我们的属性表已经导入了。但是,有时可能会出现如下图所示的情况,即导入属性表后,新的项目依然无法调用这些第三方库。

  并且此时双击打开属性表的属性页,发现其中我们刚刚配置的附加包含目录附加库目录附加依赖项等3个属性都还是空白的。

  针对这一情况,我们可以首先在新的项目中,在刚刚导入的属性表名称处右键并选择“移除”;随后,将这一新项目所在的解决方案关闭,并再一次在原有项目中保存属性表;随后,将原有项目所在的解决方案关闭,打开新的项目所在的解决方案,重新导入属性表。一般情况下,新的项目就可以使用这些第三方库了。

  在今后若有其他新的项目需要配置这些第三方库,我们就可以直接导入这一属性表文件,从而实现快速的环境配置。

  至此,大功告成。

将编译过的C++库迅速部署在Visual Studio新项目中的更多相关文章

  1. 在 Visual Studio for Mac 中编译和生成

    使用Visual Studio将C#生成DLL文件的方法 https://www.cnblogs.com/AaronBlogs/p/6840283.html Visual Studio 开发 - Vi ...

  2. 创建用于自定义SharePoint解决方案部署的Visual Studio项目

    转:http://soft.zdnet.com.cn/software_zone/2007/0903/488083.shtml 在基于SharePoint的开发中,我们通常会在WSS的TEMPLATE ...

  3. 如何在Visual Studio和CodeBlocks中反编译C++代码

    在Visual Studio中 第一步:打断点 第二步:Debug->Star Debugging 或直接按"F5" 第三步:Debug->Windows->Di ...

  4. 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题

    https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_fol ...

  5. 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

    原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio ...

  6. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  7. 直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分

    直接在CMake项目中编译GoogleTest和GoogleMock作为项目的一部分 本文是关于如何将GoogleTest和GoogleMock在没有预先编译安装在机器的情况下,直接在项目中作为项目的 ...

  8. 微软发布VSBT,无需安装Visual Studio即可实现项目编译

    安装了Visual Studio的那些使用微软平台的开发者通常能够非常容易地操作自己的项目:打开解决方案,修改内容,设置好所有必须的文件以及配置后编译项目.但是在构建服务器或者持续交付系统等没有安装V ...

  9. 剖析并利用Visual Studio Code在Mac上编译、调试c#程序

    0x00 前言 一周多以前的微软的Build大会上,微软发布了一个让很多人眼前一亮的工具,也是本文的主角——Visual Studio Code.很多使用Windows的朋友都很高兴,认为又多了一个很 ...

  10. 在Swift项目中使用cocoaPods导入第三方OC库

    首先保证你的项目是基于cocoaPods的,并且是通过XX.xcworkspace打开的.cocoaPods安装教程(Xcode6以上) 下面就第三方库MBProgressHUD来讲解如何在Swift ...

随机推荐

  1. EZHTTP(一键安装Nginx Apache PHP MySQL Memcached Pureftpd)安装【测试ing】

    EZHTTP(一键安装Nginx Apache PHP MySQL Memcached Pureftpd)安装 [复制链接] 本帖最后由 梁国平 于 2014-2-11 22:47 编辑 简介     ...

  2. MMDeploy部署实战系列【第四章】:onnx,tensorrt模型推理

    MMDeploy部署实战系列[第四章]:onnx,tensorrt模型推理 这个系列是一个随笔,是我走过的一些路,有些地方可能不太完善.如果有那个地方没看懂,评论区问就可以,我给补充. 目录: 0️⃣ ...

  3. 2024年GPLT团体程序设计比赛L2-D吉利矩阵题解

    只能说比赛时前期做得太慢了,后面导致题目只能捞点分数(IOI赛制),当时这道题是我不剪枝DFS拿了4分,压线拿铜牌! 考完试一做,发现是个大水题(bushi) 主要原理:DFS(深度优先搜索) + 剪 ...

  4. 前端直接获取用户IP的方法

    前端直接获取用户IP的方法 简单来说就是使用两个接口 一个是太平洋网 <script src="//whois.pconline.com.cn/ipJson.jsp?callback= ...

  5. TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评

    简介: 二级索引是关系型数据库相较于NoSQL数据库的一个关键差异.二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础.本次测试将重点关注不同分布式 ...

  6. 阿里的 RocketMQ 如何让双十一峰值之下 0 故障?

    简介: 2020 年双十一交易峰值达到 58.3 W 笔/秒,消息中间件 RocketMQ 继续数年 0 故障丝般顺滑地完美支持了整个集团大促的各类业务平稳. 作者 | 愈安来源 | 阿里巴巴云原生公 ...

  7. [Blockchain] 以太坊主流测试网 ropsten 和 kovan 的区别 以及 如何选择

    ropsten 采用 POW (Proof-of-Work)共识机制,挖矿难度系数非常低,容易被攻击,不够低碳环保. kovan 采用 POA (Proof-of-Authority)共识机制,不需要 ...

  8. 2019-6-11-C#-标准性能测试

    title author date CreateTime categories C# 标准性能测试 lindexi 2019-06-11 08:36:22 +0800 2018-06-18 15:58 ...

  9. vue+vant+js实现购物车原理小demo(中级版有选择)

    增加只计算已选的的购物车商品功能.效果图: main.js: Vue.use(Stepper); Vue.use(Checkbox); Vue.use(CheckboxGroup); 上代码: < ...

  10. Java获取电脑盘符(最后一个盘符)

    //遍历获得所有盘符 File[] roots = File.listRoots(); for (int i =0; i < roots.length; i++) { System.out.pr ...