所謂工欲善其事,必先利其器,我將用兩節(jié)課的內(nèi)容向大家介紹 C++ 的開發(fā)工具
及開發(fā)環(huán)境
的一些知識。
Visual Studio 誕生至今已有 25 年以上的歷史,功能強(qiáng)大,用的人非常多,社區(qū)的朋友戲稱它為宇宙最強(qiáng)大的 IDE,我覺得如果不考慮外星文明的話,它確實(shí)是名副其實(shí)的。下圖是?GitHub 統(tǒng)計的 IDE 排名情況,Visual Studio 穩(wěn)居第一。
本節(jié)課我們就介紹一些 Visual Studio 的基本功能,從如何安裝 Visual Studio 到使用 Visual Studio 開發(fā)一個簡單的 C++ 應(yīng)用程序,再到 Visual Studio 中的一些常用功能和配置屬性,總之,我會盡可能地帶領(lǐng)大家從 Visual Studio Code 遷移到 Visual Studio 上來。
使用 Visual Studio 開發(fā)工具你可以從?Visual Studio 官網(wǎng)下載 Visual Studio 開發(fā)工具。選擇 Community 版即可。
Visual Studio 是一個集成開發(fā)工具,在安裝的時候,我們只要選擇 C++ 相關(guān)的套件即可,如下圖所示:
注意:我們安裝的 Windows SDK 的版本是 10.0.19041.0,稍后我們還會介紹到它。
前端開發(fā)者的現(xiàn)代 C++ 課 - 劉曉倫liulun - 掘金小冊專門為前端開發(fā)者“定制”的現(xiàn)代 C++ 編程指南?!盖岸碎_發(fā)者的現(xiàn)代 C++ 課」由劉曉倫liulun撰寫,490人購買https://s.juejin.cn/ds/kUo6RHC/
由于是在線安裝,所以安裝過程比較漫長,需要耐心等待。如果你要離線安裝 Visual Studio,可以參考這篇文章的后半部分。
安裝完 Visual Studio 之后,創(chuàng)建一個 C++?空項目
,如下圖所示:
項目創(chuàng)建成功之后,你會在 Visual Studio 右側(cè)看到解決方案資源管理器
的界面:
上圖中,頭文件
、源文件
、資源文件
都是過濾器,并不是文件夾,如果你希望讓解決方案資源管理器
顯示具體的文件路徑,可以點(diǎn)擊紅框標(biāo)記的按鈕(顯示所有文件按鈕)。
右鍵點(diǎn)擊
解決方案資源管理器中的工程文件
(上圖中黑色粗體標(biāo)記的項),為工程添加一個 main.cpp 文件,這就是我們的第一個程序文件。在這個文件中鍵入如下代碼:
#includeint main() {
std::cout<< "Hello World!"<< std::endl;
char c = std::getchar();
return 0;
}
上述代碼使用std::cout
向控制臺窗口輸出一個字符串Hello World!
,接著使用std::getchar
方法接收用戶輸入的一個字符,當(dāng)用戶真正輸入字符后,程序退出(本節(jié)旨在介紹開發(fā)環(huán)境,這里只簡單介紹一下代碼)。
接著點(diǎn)擊 Visual Studio 中的調(diào)試按鈕
,啟動程序,如下圖所示:
此時你會看到控制臺窗口輸出 Hello World!,隨便輸入一個字符,然后按下回車鍵,應(yīng)用程序會跟著退出,符合我們的預(yù)期。
程序運(yùn)行一次之后會在?\x64\Debug
目錄下生成 exe 可執(zhí)行文件,如果你把上圖中的?Debug
選項調(diào)整成?Release
,再次運(yùn)行程序,那么?\x64\Release
目錄下也會生成相應(yīng)的可執(zhí)行文件。如果你把上圖中的?x64
選項調(diào)整成?x86
,再次運(yùn)行程序,那?\Release
或?\Debug
目錄下會出現(xiàn)相應(yīng)的可執(zhí)行文件。
我們可以在源碼編輯器的左側(cè)為程序設(shè)置斷點(diǎn),當(dāng)程序運(yùn)行到斷點(diǎn)之后會停止運(yùn)行,此時我們可以把鼠標(biāo)移至某個變量,觀察它此刻的值,如下圖所示:
調(diào)試方式和我們在網(wǎng)頁中用開發(fā)者調(diào)試工具調(diào)試 JavaScript 代碼類似。
熟悉 Visual Studio 開發(fā)工具如果你的代碼存在錯誤,那么在啟動調(diào)試之后,Visual Studio 會在錯誤列表
窗口給出錯誤提示,如下圖所示:
鼠標(biāo)雙擊某行錯誤信息,C++ 編輯器會直接為你定位到出錯的行。
另外,啟動調(diào)試之后,Visual Studio 會在輸出
窗口給出編譯過程信息及開發(fā)者要求輸出到控制臺的信息,如下圖所示:
如果你不小心關(guān)閉了這兩個窗口,那么可以在菜單視圖->輸出
、菜單視圖->錯誤列表
中重新打開這兩個窗口。
作為前端開發(fā)者你肯定熟悉 VS Code 的快捷鍵,你可以通過如下方式把 Visual Studio 的快捷鍵設(shè)置成與 VS Code 相同的快捷鍵方案(點(diǎn)擊菜單工具->選項
打開如下窗口):
設(shè)置好快捷鍵之后,按下?Ctrl+F
鍵打開查找窗口,你可以在這個窗口中查找源碼中指定的信息,如下圖所示(注意查找范圍):
按下?Ctrl+P
后打開文件查找對話框,輸入文件名就可以查找工程中指定的文件,如下圖所示:
當(dāng)工程變得龐大之后,這兩個查找窗口非常有用。
Visual Studio 還有很多有用的窗口,這里我們只介紹比較重要的幾個,其他的就留給你自己去探索了。
常規(guī)配置屬性右鍵點(diǎn)擊工程文件
,打開工程的屬性
對話框,如下圖所示:
首先配置
下拉框中默認(rèn)包含?Debug
和?Release
兩個選項,默認(rèn)情況下使用 Debug 方式編譯出的二進(jìn)制程序未經(jīng)壓縮和優(yōu)化,體積較大,但便于調(diào)試。使用 Release 編譯出的二進(jìn)制程序,經(jīng)過了壓縮和優(yōu)化,體積較小,便于分發(fā)給用戶。
平臺
下拉框中默認(rèn)包含?X64
和?Win32
兩個選項,這兩個選項標(biāo)志著你在為什么平臺編譯程序,X64 是指 64 位操作系統(tǒng),Win32 是指 32 位操作系統(tǒng)。
切換了這兩個下拉框之后,下面的配置屬性中的選項也會跟著切換,也就是說,如果你把 Debug 的配置屬性修改的和 Release 的配置屬性一模一樣,那么即使使用 Debug 編譯應(yīng)用程序,最終得到的也是壓縮和優(yōu)化的二進(jìn)制程序,與使用 Release 編譯出的二進(jìn)制程序一模一樣。
在上圖配置屬性->常規(guī)
的配置項中,輸出目錄
指定的是工程編譯完成后二進(jìn)制程序輸出的目錄路徑;中間目錄
是編譯過程中產(chǎn)生的一些臨時文件的存放路徑;目標(biāo)文件名
是編譯完成后二進(jìn)制程序的文件名。
這三項配置都用到了 Visual Studio 內(nèi)置的配置宏,比如$(SolutionDir)
代表著工程文件所在目錄,你可以到微軟官網(wǎng)查閱具體的宏對應(yīng)的含義。
上圖中?配置類型
為編譯后生成的二進(jìn)制程序的文件類型,常見的有動態(tài)庫.dll
、靜態(tài)庫.lib
和應(yīng)用程序.exe
,其中應(yīng)用程序.exe 就是可執(zhí)行程序,這里就不多做解釋了。
我們可以簡單地把動態(tài)庫理解為 dll 文件,應(yīng)用程序可以在運(yùn)行時主動地加載動態(tài)庫并調(diào)用動態(tài)庫暴露出來的方法。這很像我們在 Node.js 代碼中 require 一個獨(dú)立的 js 文件。
一個動態(tài)庫可以被多個應(yīng)用程序同時使用,Windows 操作系統(tǒng)內(nèi)就包含了很多動態(tài)庫。實(shí)際上 Node.js 的原生模塊(.node 文件)就是一個比較特殊的動態(tài)庫。
我們可以簡單地把靜態(tài)庫理解為 lib 文件,靜態(tài)庫文件里包含庫的實(shí)現(xiàn)代碼,如果一個應(yīng)用程序依賴某個靜態(tài)庫,那么編譯這個應(yīng)用程序時,就會直接把靜態(tài)庫編譯到應(yīng)用程序自己的二進(jìn)制文件中。這很像 Webpack 或 Rollup 幫我們把多個 js 腳本捆扎成一個 js 腳本,這樣在分發(fā)應(yīng)用程序時,就不必再分發(fā)庫文件了。
由此可見,動態(tài)庫有利于復(fù)用,靜態(tài)庫有利于分發(fā)。
每個 Windows 應(yīng)用程序都會或多或少地依賴操作系統(tǒng) API,Windows SDK 版本
就是為你的應(yīng)用程序指定系統(tǒng) API 版本的配置項,我們安裝 Visual Studio 的時候,就安裝了 Windows SDK 10.0.19041.0,選擇什么 Windows SDK 版本意味著你的應(yīng)用程序要兼容什么版本的 Windows 操作系統(tǒng)。不過 Windows 操作系統(tǒng)向來兼容性都很不錯,一般開發(fā)者都會選擇最新的 Windows SDK 版本。
平臺工具集
指定你的應(yīng)用程序使用什么工具進(jìn)行編譯鏈接。這里需要注意的是,選擇不同的平臺工具集后 Windows SDK 版本也可能會跟著切換,因?yàn)橛行┑桶姹镜钠脚_工具集無法適配高版本的 Windows SDK。此處我們也應(yīng)該盡量使用最新版本的平臺工具集。
C++ 語言標(biāo)準(zhǔn)
指定你的應(yīng)用程序使用什么版本的 C++ 進(jìn)行開發(fā)。自 C++ 11 以來,C++ 標(biāo)準(zhǔn)委員會每 3 年發(fā)布一個版本,不過編譯器對新語言特性的支持相對來說比較滯后,目前來看新項目使用 C++ 17 的開發(fā)者比較多,不過我們選擇?C++ 20
,提早讓大家熟悉這個版本的 C++ 語言。
配置項配置屬性->調(diào)試->命令參數(shù)
可以讓你通過 Visual Studio 啟動應(yīng)用程序調(diào)試時,為你的應(yīng)用程序傳入特定的命令行參數(shù)。同樣你也可以在這個面板中設(shè)置應(yīng)用程序的工作目錄
。
你可以在配置屬性->生成事件
面板中配置應(yīng)用程序的生成前事件
、鏈接前事件
和生成后事件
,這些地方設(shè)置的都是 CMD 命令,你可以讓這些命令幫你完成很多有用的任務(wù),比如應(yīng)用程序生成前準(zhǔn)備環(huán)境,應(yīng)用程序生成后打掃垃圾等。
如果你希望你開發(fā)的應(yīng)用程序有更高的權(quán)限,訪問一些特殊文件或系統(tǒng) API,那么你可以配置配置屬性->鏈接器->清單文件
、?UAC 執(zhí)行級別
和UAC 繞過 UI 保護(hù)
配置項。
開發(fā)桌面應(yīng)用時,要把配置屬性->鏈接器->系統(tǒng)->子系統(tǒng)
的值設(shè)置為窗口 (/SUBSYSTEM:WINDOWS)
;開發(fā)控制臺應(yīng)用時,要把值設(shè)置為控制臺 (/SUBSYSTEM:CONSOLE)
。
開發(fā)桌面應(yīng)用時,如果你的窗口界面顯得模糊不清,那么可以把配置屬性->清單工具->輸入和輸出->DPI識別功能
設(shè)置為高DPI識別
。
本節(jié)我們主要介紹了“宇宙最強(qiáng)大的 IDE ”: Visual Studio 的一些基礎(chǔ)功能和配置。
開發(fā)者僅僅了解這些內(nèi)容肯定還不能嫻熟地使用 Visual Studio 開發(fā) C++ 項目,下一節(jié)將進(jìn)一步介紹 Visual Studio 開發(fā)工具的相關(guān)知識。
前端開發(fā)者的現(xiàn)代 C++ 課 - 劉曉倫liulun - 掘金小冊專門為前端開發(fā)者“定制”的現(xiàn)代 C++ 編程指南。「前端開發(fā)者的現(xiàn)代 C++ 課」由劉曉倫liulun撰寫,490人購買https://s.juejin.cn/ds/kUo6RHC/
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧