C++ 开发环境其实挺难搞的(上)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

所谓工欲善其事必先利其器我将用两节课的内容向大家介绍 C++ 的开发工具开发环境的一些知识。

Visual Studio 诞生至今已有 25 年以上的历史功能强大用的人非常多社区的朋友戏称它为宇宙最强大的 IDE我觉得如果不考虑外星文明的话它确实是名副其实的。下图是 GitHub 统计的 IDE 排名情况Visual Studio 稳居第一。

本节课我们就介绍一些 Visual Studio 的基本功能从如何安装 Visual Studio 到使用 Visual Studio 开发一个简单的 C++ 应用程序再到 Visual Studio 中的一些常用功能和配置属性总之我会尽可能地带领大家从 Visual Studio Code 迁移到 Visual Studio 上来

使用 Visual Studio 开发工具

你可以从 Visual Studio 官网下载 Visual Studio 开发工具。选择 Community 版即可。

Visual Studio 是一个集成开发工具在安装的时候我们只要选择 C++ 相关的套件即可如下图所示

注意我们安装的 Windows SDK 的版本是 10.0.19041.0稍后我们还会介绍到它。

前端开发者的现代 C++ 课 - 刘晓伦liulun - 掘金小册专门为前端开发者“定制”的现代 C++ 编程指南。「前端开发者的现代 C++ 课」由刘晓伦liulun撰写490人购买https://s.juejin.cn/ds/kUo6RHC/

由于是在线安装所以安装过程比较漫长需要耐心等待。如果你要离线安装 Visual Studio可以参考这篇文章的后半部分。

安装完 Visual Studio 之后创建一个 C++ 空项目如下图所示

项目创建成功之后你会在 Visual Studio 右侧看到解决方案资源管理器的界面

 

上图中头文件源文件资源文件都是过滤器并不是文件夹如果你希望让解决方案资源管理器显示具体的文件路径可以点击红框标记的按钮显示所有文件按钮。

右键点击解决方案资源管理器中的工程文件上图中黑色粗体标记的项为工程添加一个 main.cpp 文件这就是我们的第一个程序文件。在这个文件中键入如下代码

#include <iostream>
int main() {
    std::cout << "Hello World!" << std::endl;
    char c = std::getchar();
    return 0;
}

上述代码使用std::cout向控制台窗口输出一个字符串Hello World!接着使用std::getchar方法接收用户输入的一个字符当用户真正输入字符后程序退出本节旨在介绍开发环境这里只简单介绍一下代码。

接着点击 Visual Studio 中的调试按钮启动程序如下图所示

此时你会看到控制台窗口输出 Hello World!随便输入一个字符然后按下回车键应用程序会跟着退出符合我们的预期。

程序运行一次之后会在 \x64\Debug 目录下生成 exe 可执行文件如果你把上图中的 Debug选项调整成 Release 再次运行程序那么 \x64\Release 目录下也会生成相应的可执行文件。如果你把上图中的 x64 选项调整成 x86 再次运行程序那 \Release 或 \Debug目录下会出现相应的可执行文件。

我们可以在源码编辑器的左侧为程序设置断点当程序运行到断点之后会停止运行此时我们可以把鼠标移至某个变量观察它此刻的值如下图所示

调试方式和我们在网页中用开发者调试工具调试 JavaScript 代码类似

熟悉 Visual Studio 开发工具

如果你的代码存在错误那么在启动调试之后Visual Studio 会在错误列表窗口给出错误提示如下图所示

鼠标双击某行错误信息C++ 编辑器会直接为你定位到出错的行。

另外启动调试之后Visual Studio 会在输出窗口给出编译过程信息及开发者要求输出到控制台的信息如下图所示

如果你不小心关闭了这两个窗口那么可以在菜单视图->输出、菜单视图->错误列表中重新打开这两个窗口。

作为前端开发者你肯定熟悉 VS Code 的快捷键你可以通过如下方式把 Visual Studio 的快捷键设置成与 VS Code 相同的快捷键方案点击菜单工具->选项打开如下窗口

设置好快捷键之后按下 Ctrl+F 键打开查找窗口你可以在这个窗口中查找源码中指定的信息如下图所示注意查找范围

按下 Ctrl+P 后打开文件查找对话框输入文件名就可以查找工程中指定的文件如下图所示

当工程变得庞大之后这两个查找窗口非常有用。

Visual Studio 还有很多有用的窗口这里我们只介绍比较重要的几个其他的就留给你自己去探索了。

常规配置属性

右键点击工程文件打开工程的属性对话框如下图所示

首先配置下拉框中默认包含 Debug 和 Release 两个选项默认情况下使用 Debug 方式编译出的二进制程序未经压缩和优化体积较大但便于调试。使用 Release 编译出的二进制程序经过了压缩和优化体积较小便于分发给用户。

平台下拉框中默认包含 X64 和 Win32 两个选项这两个选项标志着你在为什么平台编译程序X64 是指 64 位操作系统Win32 是指 32 位操作系统。

切换了这两个下拉框之后下面的配置属性中的选项也会跟着切换也就是说如果你把 Debug 的配置属性修改的和 Release 的配置属性一模一样那么即使使用 Debug 编译应用程序最终得到的也是压缩和优化的二进制程序与使用 Release 编译出的二进制程序一模一样

在上图配置属性->常规的配置项中输出目录指定的是工程编译完成后二进制程序输出的目录路径中间目录是编译过程中产生的一些临时文件的存放路径目标文件名是编译完成后二进制程序的文件名。

这三项配置都用到了 Visual Studio 内置的配置宏比如$(SolutionDir)代表着工程文件所在目录你可以到微软官网查阅具体的宏对应的含义。

上图中 配置类型 为编译后生成的二进制程序的文件类型常见的有动态库.dll静态库.lib应用程序.exe其中应用程序.exe 就是可执行程序这里就不多做解释了。

我们可以简单地把动态库理解为 dll 文件应用程序可以在运行时主动地加载动态库并调用动态库暴露出来的方法。这很像我们在 Node.js 代码中 require 一个独立的 js 文件

一个动态库可以被多个应用程序同时使用Windows 操作系统内就包含了很多动态库。实际上 Node.js 的原生模块.node 文件就是一个比较特殊的动态库。

我们可以简单地把静态库理解为 lib 文件静态库文件里包含库的实现代码如果一个应用程序依赖某个静态库那么编译这个应用程序时就会直接把静态库编译到应用程序自己的二进制文件中。这很像 Webpack 或 Rollup 帮我们把多个 js 脚本捆扎成一个 js 脚本这样在分发应用程序时就不必再分发库文件了。

由此可见动态库有利于复用静态库有利于分发

每个 Windows 应用程序都会或多或少地依赖操作系统 APIWindows SDK 版本就是为你的应用程序指定系统 API 版本的配置项我们安装 Visual Studio 的时候就安装了 Windows SDK 10.0.19041.0选择什么 Windows SDK 版本意味着你的应用程序要兼容什么版本的 Windows 操作系统。不过 Windows 操作系统向来兼容性都很不错一般开发者都会选择最新的 Windows SDK 版本。

平台工具集指定你的应用程序使用什么工具进行编译链接。这里需要注意的是选择不同的平台工具集后 Windows SDK 版本也可能会跟着切换因为有些低版本的平台工具集无法适配高版本的 Windows SDK。此处我们也应该尽量使用最新版本的平台工具集。

C++ 语言标准指定你的应用程序使用什么版本的 C++ 进行开发。自 C++ 11 以来C++ 标准委员会每 3 年发布一个版本不过编译器对新语言特性的支持相对来说比较滞后目前来看新项目使用 C++ 17 的开发者比较多不过我们选择 C++ 20提早让大家熟悉这个版本的 C++ 语言。

其他重要的配置属性

配置项配置属性->调试->命令参数可以让你通过 Visual Studio 启动应用程序调试时为你的应用程序传入特定的命令行参数。同样你也可以在这个面板中设置应用程序的工作目录

你可以在配置属性->生成事件面板中配置应用程序的生成前事件链接前事件生成后事件这些地方设置的都是 CMD 命令你可以让这些命令帮你完成很多有用的任务比如应用程序生成前准备环境应用程序生成后打扫垃圾等。

如果你希望你开发的应用程序有更高的权限访问一些特殊文件或系统 API那么你可以配置配置属性->链接器->清单文件、 UAC 执行级别UAC 绕过 UI 保护配置项。

开发桌面应用时要把配置属性->链接器->系统->子系统的值设置为窗口 (/SUBSYSTEM:WINDOWS)开发控制台应用时要把值设置为控制台 (/SUBSYSTEM:CONSOLE)

开发桌面应用时如果你的窗口界面显得模糊不清那么可以把配置属性->清单工具->输入和输出->DPI识别功能设置为高DPI识别

总结

本节我们主要介绍了“宇宙最强大的 IDE ” Visual Studio 的一些基础功能和配置。

  • 首先我们介绍了如何安装 Visual Studio安装过程中附带安装了 Windows SDK
  • 接着我们使用 Visual Studio 开发了一个简单 C++ 的程序同时还讲解了怎么调试这个程序
  • 然后介绍了 Visual Studio 的一些基础功能比如查找字符串或文件等功能
  • 最后我们介绍了 C++ 工程的一些常规配置属性动态链接库、静态链接库、平台工具集等。

开发者仅仅了解这些内容肯定还不能娴熟地使用 Visual Studio 开发 C++ 项目下一节将进一步介绍 Visual Studio 开发工具的相关知识。

前端开发者的现代 C++ 课 - 刘晓伦liulun - 掘金小册专门为前端开发者“定制”的现代 C++ 编程指南。「前端开发者的现代 C++ 课」由刘晓伦liulun撰写490人购买https://s.juejin.cn/ds/kUo6RHC/

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: c++

“C++ 开发环境其实挺难搞的(上)” 的相关文章