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

news/2024/7/16 6:20:03 标签: visual studio, 项目配置, 配置管理

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

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

        正确的做法是:

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

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

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

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

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

        另外还有一个技巧:

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

        相关的设置的位置:

(这里是结束)


http://www.niftyadmin.cn/n/5126916.html

相关文章

【Linux】操作系统以及虚拟机的安装与配置

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.操作系统的介绍 二.VMWare虚拟机的安装…

[leetcode 数位计算]2520. 统计能整除数字的位数

给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除,因此答案是 1 。 示例…

pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现

本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参考文章:【小白入门Pytorch】乳腺癌识别🍖 原作者:K同学啊 在本案例中,我将带大家探索一下深…

iPhone手机屏幕分辨率

ios app测试时,需要测试应用在不同型号的苹果手机上的表现形式,可以自己在浏览器上配置。 代数设备逻辑像素尺寸缩放发布时间第一代iPhone 2G320 x 480480 x 3203.5寸1x2007年6月29日第二代iPhone 3320 x 480480 x 3203.5寸1x2008年7月11日第三代iPhone …

c# .net linux ImageSharp+FastDFS+Base64上传图片,压缩图片大小

.net 以前是用System.Drawing来处理图片,但是在linux上用不了 微软官方推荐用 1、SkiaSharp 调试了挺久 如果项目运行到docker里,需要NUGET安装SkiaSharp.NativeAssets.Linux.NoDependencies 2、ImageSharp 用起来这个方便一些,推荐 nuget安装SixL…

【JAVA基础】多线程与线程池

多线程与线程池 文章目录 多线程与线程池1. 相关概念1.1 线程调度1.2 守护线程 2. 生命周期3. 同步机制/同步锁3.1 synchronized3.2 lock3.3 synchronized 与 Lock 的对比 4. 死锁5. 线程通信5.1 线程间的通信5.2 等待唤醒机制5.3 举例5.4 调用 wait 和 notify 需注意的细节5.5…

一定解决exe4j打包出错问题

文章目录 出错原因及解决办法具体操作步骤注意:这里将jdk设置成相对路径注意:将jdk存放在和程序相同的文件夹下,这样才算相对路径 出错原因及解决办法 由于每个人的电脑中文件夹绝对不相同,所以你的程序在你的电脑中可以找到相应…

怎样下载视频号视频?分享6种有效方法

在今天的数字时代,视频号视频成为了人们生活中不可或缺的一部分。有时候,我们看到了一段精彩的视频,希望能够保存下来欣赏或分享给朋友,却因为平台限制而困难重重。为了帮助你实现这个目标,本文将介绍几种简单而有效的…