Visual Studio(VS)C++项目 管理第三方依赖库和目录设置

news2024/10/5 14:21:55

        发现很多程序员存在这种做法:把项目依赖的第三方库的lib和dll放在项目目录下,或者复制到输出目录,因为每种配置都有不同的输出目录,所以要复制多份(至少包括Debug和Release两个输出目录),这些做法有很多弊端:

  • 放在项目目录下不能把项目自己的内容和第三方内容分开,这会导致一些混乱,比如不知道那些是自己的、哪些可以去官网更新
  • 复制到输出目录导致做配置管理的时候不能直接忽略输出目录,从而上传了垃圾文件到版本库
  • 复制多份违背配置管理的基本原则:一个东西只在一处

        正确的做法是:

  • 严格区分自己的文件和第三方文件
  • 第三方文件独立目录存放
  • 运行配置独立目录存放
  • 程序输出独立目录存放

        以上原则的主要目的是,能够用最简单的方式忽略不要入库的文件,符合以上原则只需要忽略几个目录即可。

        为了实现以上目的,要知道VS的几个配置:

  • 【C/C++】组的【附加包含目录】,这个基本都知道,用来指定查询头文件的位置
  • 【链接器组】的【常规】的【附加库目录】,用来指定链接时寻找lib和dll的位置(注意不是运行时找dll的位置啊)
  • 【链接器组】的【输入】的【附加依赖项】,这就是要链接的库,大家都知道
  • 【生成事件】组的【生成后事件】,这是编译成功后执行的命令,直接写dos命令即可,比如把依赖的复制到输出目录,这样程序就可以运行了
  • 【调试】组的【工作路径】,默认值是项目路径,修改为依赖的dll所在的位置即可让程序跑起来,但是如果程序需要在工作路径输出文件啊、日志啊什么的,这就不一定合适了,违背了要入库的文件和不要入库的文件不能混在一起这个原则,所以要和生成后事件协作,让程序在合适的工作目录执行
  • 另外,多个项目共享的内容也可以直接放在解决方案下,放头文件、配置文件什么的是没有问题的

        VS里面有一些常用的宏应该了解一下,比如【$(ProjectDir)】代表项目目录,很多配置项配置的时候旁边有个按钮【宏->】,点开就是所有可用的宏。

        另外还有一个技巧:

        VS的项目配置编辑的时候可以选择【所有配置】和【所有平台】,从而一次性修改所有配置。

        相关的设置的位置:

(这里是结束)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商独立站前端、后端、接口协议和电商API接口请求方式

前端是做什么的?后端是做什么的?哪些事情,是前端做的?哪些事情,是后端做的?前后端一体是什么意思?接口、接口协议、接口请求方式…… 1、前端所写的程序,主要运行在客户端&#xff…

如何实现超大场景三维模型数据坐标转换

如何实现超大场景三维模型数据坐标转换 要实现超大场景倾斜摄影三维模型数据的坐标转换,可以利用几何坐标变换技术。以下是一种基本的实现方法: 1、数据分割:首先,将超大场景划分为多个较小区域,以便进行分块处理。这…

肠道菌群介导的药物反应的个体差异不容忽视

谷禾健康 为什么一种药物对一位患者反应良好,但对另一位患者反应不佳,甚至在某些情况下会导致严重的药物不良反应? 研究表明,一些药物的反应率在50%-75%,也就是说很多人服用药物后其实没有得到实际的改善,这…

mysql查看数据表文件的存放路径

mysql查看数据表文件的存放路径_怎么看mysql表的位置在哪-CSDN博客 问题: 我们在mysql的安装目录中没有找到data(数据库存放的地方)的文件夹,我们需要找到数据库文件data的存放目录。 解决方法:在mysql的cmd中输入以下…

2015年亚太杯APMCM数学建模大赛A题海上丝绸之路发展战略的影响求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 A题 海上丝绸之路发展战略的影响 原题再现 一带一路不是实体或机制,而是合作与发展的理念和主张。凭借现有有效的区域合作平台,依托中国与有关国家现有的双边和多边机制,利用古丝绸之路的历史象征&#xff0…

安装element-plus

使用npm包管理器下载 打开cmd “winr” 安装node.js之后自带npm ,无需单独安装 测试工具:在命令行输入 npm -v 能有个版本号,就说明工具能用 如果要更新npm,可以使用如下命令 npm install npm -g 使用以下命令安装 npm instal…

红队专题-Web渗透之注入攻击总结

红队专题 招募六边形战士队员ORM注入SSTI 服务器端模板注入(Server-Side Template Injection)高危Flask(Jinja2)SSTI服务端模板注入漏洞知识点介绍 漏洞影响产生原因漏洞原理复现过程构造POC漏洞修复XXE XML外部实体注入 漏洞CRLF注入/HTTP响应拆分漏洞(HTTP Respon…

欧姆龙PLC串口通讯详解

欧姆龙PLC与上位机连接时一般采用的是Hoslink协议,它是一种简易经济的通讯方式,比较适合一台上位机和一台PLC或者多台PLC进行通讯。上位机可对漂亮C进行程序传送和读写等操作。HOSTLINK系统允许一台上位机通过上位机链接命令向HOSTLINK系统的PLC发送命令…

二进制安装部署k8s

概要 常见的K8S按照部署方式 minikube 是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习,预习K8S的一些特性使用。 Kubeadmin kubeadmin也是一个工具,特工kubeadm init 和kubedm join,用于快速部署k8s…

DPZE-A-671、DPZO-A-453比例控制方向阀放大器

DPZE-A-151、DPZE-A-252、DPZE-A-471、DPZE-A-673、DPZE-A-251、DPZE-A-452、DPZE-A-671、DPZE-A-173、DPZO-A-151、DPZO-A-253、DPZO-A-471、DPZO-A-673、DPZO-A-651、DPZO-A-453、DPZO-A-171、DPZO-A-273比例换向阀,不带位置传感器,带正遮盖阔芯&#…

H41H-64C止回阀型号解析

H41H-64C型号字母含义解析 H41H-64C是德特森阀门常用的升降式止回阀型号字母分别代表的意思是: H——代表阀门类型《止回阀》 4——代表连接方式《法兰》 1——代表结构形式《升降》 H——代表阀座堆焊《不锈钢》 -代表分隔键 64——代表公称压力《6.4MPA》 C——代表阀…

Windoes定时任务、设置定时重启系统

步骤一: 打开计算机管理 通过:control(控制面板)或者compmgmt.msc(计算机管理)打开程序 步骤二:打开——>系统工具 步骤三: 选择——>任务计划程序 步骤四: 可选择创建新文件命名&…

使用了lua-resty-http库进行 爬虫

lua-resty-http是一个基于OpenResty的HTTP客户端库,用于在Lua中进行HTTP请求和响应的处理。它提供了简单易用的接口,可以方便地进行网页抓取和爬虫开发。 使用lua-resty-http进行爬虫,需要先安装OpenResty和lua-resty-http库,并将…

红队专题-Web渗透之权限提升总结

权限提升专题 招募六边形战士队员提权介绍提权前提:Linux提权内核漏洞提权-首选考虑明文root密码提权计划任务密码复用 05 提权与内网渗透第三章 数据库提权第一节 SQL Server数据库漏洞利用与提权第二节 MySQL数据库漏洞与提权mysql root权限下 提权UDF 提权执行系…

Python-利用海龟库输出以下图形

利用海龟库输出以下图形 import turtle turtle.setup(650, 350,200, 200) a["white","yellow","magenta","cyan","blue","black","cyan"] turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pen…

软件开发全文档整理(原件获取)

一、软件开发周期及各阶段文档的作用 软件开发周期通常包括需求分析、设计、编码、测试和维护等阶段。每个阶段都需要相应的文档来记录和说明。以下是各阶段文档的作用: **需求分析阶段:**需求分析文档是软件开发的基础,它描述了用户需求和…

Zynq UltraScale+ XCZU4EV 纯VHDL解码 IMX214 MIPI 视频,2路视频拼接输出,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优越性4、详细设计方案设计原理框图IMX214 摄像头及其配置D-PHY 模块CSI-2-RX 模块Bayer转RGB模块伽马矫正模块VDMA图像缓存Video Scaler 图像缓存DP 输出 5、vivado工程详解PL端FPGA硬件设计…

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)

51单片机汽车胎压大气气压测量仪仿真设计_数码管显示 (代码仿真设计报告讲解) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0018 目录 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示功…

高效技巧揭秘:Java轻松批量插入或删除Excel行列操作

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在职场生活中,对Excel工作表的行和列进行操作是非常普遍的需求。一般情况下…

普洛斯数据中心为某互联网头部平台打造的首个液冷智算数据中心正式交付运营

普洛斯数据中心近期向某互联网头部平台交付其首个液冷智算数据中心项目,该项目采用智能算力中心弹性高效节能技术方案,能够敏捷灵活应对高性能算力集群同时部署、分期上线、快速交付等多方面的挑战,并且高效耦合运维管理系统,切实…