带你玩转Visual Studio——带你管理多种释出版本

2024-01-08 13:40

本文主要是介绍带你玩转Visual Studio——带你管理多种释出版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇文章带你玩转Visual Studio——带你发布自己的工程库让我们了解基本的静态库和动态库,并将自己的工程编译成库,也能在自己的工程中引入第三方库。正如上文提到的,我们在实际开发中可能会将工程释出(也叫发布)多个不同类型的版本,如即要有静态库也要有动态库,即有Debug也有Release。如何管理这些不同的释出版本就是本文要讲的内容。


为什么要有多种释出版本

我们每打开一个工程你都会在工具栏中看到有Debug和Release两个编译方式的选择。它们有什么区别,又为什么要有Debug和Release呢?

Debug与Release
图 1:Debug与Release

Debug

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。

Release

Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以使编译出的可执行文件或库的性能最高,以便用户很好地使用。

Debug与Release的区别

Debug和Release本质上就是两组不同的编译选择配制,各自的默认设置一般不用更改。它们最大的区别在于Release进行了优化,去掉了调试信息,因此Release常用无法进行正确的调试;而Debug没有进行优化,包含了调试信息,以方便程序员进行调试。我们可以通过比较它们的配制发现它们之间的区别:

  1. 代码编译的优化

    Debug
    Debug
    Release
    Release

  2. 使用的运行时库

    Debug
    Debug
    Release
    Release

    Debug使用的运行时库一般后面会加d,而Release的不加,关于运行时库的问题后面还会有专门章节的进行讲解。

  3. 链接的优化

    Debug
    Debug
    Release
    Release

释出方式的配制和管理

既然Debug或Release就一组配制,那能不能息增加一组配制呢?当然是可以的。还记得上一文带你发布自己的工程库中的例子Utils吗?既要编译静态库又要编译动态库,我们之前都是在Debug下配制的,但编译静态库与动态库切换时每次都要更改配制非常麻烦,其实我们只要为静态库与动态库添加两组两组机制,每次编译时切换一下编译项就可以了。

  1. 点击上面图1下拉列表框的Configuration Manager…或右键工程->属性->右上角的Configuration Manager…。打开Configuration Manager对话框。

  2. 在Active solution configuration下拉列表中点击New新建的一组配制。

    Configuration Manager
    Configuration Manager

  3. Copy settings from里有几个选择,Empty表示不拷贝任何配制,添加一组默认设置的配制项;Debug表示会拷贝已有的Debug这组配制中的所有设置,添加完后你再基于这个配制进行修改。一般我们会从已有的Debug或Release中拷贝然后再进行相应的修改,因为Debug或Release中有很多已经设置好的配制,这样不容易出错,而且Debug或Release也是默认的标准配制。

    New Solution Configuration
    New Solution Configuration

  4. 选择我们新添加的配制项Debug_static,右键工程->Properties进行相应的设置,这个在前面一文中已经讲过了,不再赘述。

  5. 同样的方式,我们可以增加Debug_dynamic、Release_Static、Release_Dynamic等配制项。

    新增多个配制项
    新增多个配制项



上一篇回顾:
带你玩转Visual Studio——带你发布自己的工程库

下一篇要讲述的内容:
带你玩转Visual Studio——带你多工程开发

这篇关于带你玩转Visual Studio——带你管理多种释出版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583639

相关文章

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col