C++开发环境其实挺难搞的(上)-创新互联
所谓工欲善其事,必先利其器,我将用两节课的内容向大家介绍 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 文件,这就是我们的第一个程序文件。在这个文件中键入如下代码:
#includeint 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 应用程序都会或多或少地依赖操作系统 API,Windows 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/
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章题目:C++开发环境其实挺难搞的(上)-创新互联
标题来源:http://scyanting.com/article/desego.html