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