VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟
1.引言
在實(shí)習(xí)期間,感受到在vs code上編程的優(yōu)勢(shì)(實(shí)習(xí)期間主要寫(xiě)的lua腳本),因此想把C++和python的開(kāi)發(fā)也遷移到vs code上。如果只運(yùn)行一個(gè)簡(jiǎn)單的.cpp文件,那么使用萬(wàn)能的Code Runner插件就可以完成編譯等任務(wù)。但是,一般的C++開(kāi)發(fā)中,不可能只有一個(gè).cpp文件,還會(huì)自定義頭文件和相應(yīng)的源文件,此時(shí)Code Runner就無(wú)法滿(mǎn)足我們的要求。對(duì)于編譯多個(gè)C++源文件,我網(wǎng)上查到的資料主要有兩種方法:
(1)配置tasks.json文件
在tasks.json文件設(shè)置args參數(shù),制定需要編譯的多個(gè)文件
(2)cmake編譯多個(gè)C++源文件
2.cmake配置過(guò)程
2.1 預(yù)先安裝
在windows環(huán)境下,首先預(yù)先完成如下安裝
(1)安裝vscode
(2)安裝MinGW,并添加到環(huán)境變量
(3)安裝cmake,并添加環(huán)境變量
(4)vscode C++和cmake相關(guān)插件安裝,如圖
2.2 vscode cmake配置
(參考:http://chabaoo.cn/article/207289.htm)
(1)選擇vscode左上角,文件->首選項(xiàng)->設(shè)置->擴(kuò)展中找到cmake tools configuration及Cmake: Preferred Generators,如圖打開(kāi)settings.json文件
并增加如下配置,因?yàn)槲覀兪褂玫氖荕inGW,mingw對(duì)應(yīng)首選生成器MinGW Makefiles
{ "cmake.preferredGenerators": [ "MinGW Makefiles" ] }
(2)同樣是在擴(kuò)展一項(xiàng)中,找到cmake configuration,并將Cmake Path設(shè)置為前面cmake的安裝路徑,如圖
在vscode終端中進(jìn)行如下驗(yàn)證,看是否成功
(3) c_cpp_properties.json配置
(參考:http://chabaoo.cn/article/171801.htm)
按下ctrl+shift+p,搜索c++ config,打開(kāi)c_cpp_properties.json文件
在該文件中主要有三個(gè)參數(shù)需要修改:
- compilerPath,自己安裝的MinGW編譯器路徑
- intelliSenseMode,根據(jù)智能提示修改就行
- configurationProvider
如圖
2.3 CMakeLists.txt文件編寫(xiě)
(參考:http://chabaoo.cn/article/207291.htm,http://chabaoo.cn/article/207293.htm)
CMakeLists.txt文件編寫(xiě)分為兩種情況,一種是main.cpp和其他自定義的cpp文件在同一路徑下,如圖
main.cpp和mathfunc.cpp都在lib目錄下,此時(shí),CMakeLists.txt文件內(nèi)容如下:
# cmake最低版本要求 cmake_minimum_required(VERSION 3.10) # 項(xiàng)目名名稱(chēng) project(testvscode) # 頭文件路徑 include_directories(include) # 枚舉指定目錄下的源文件,并添加到變量DIR_SRCS中 aux_source_directory(./lib DIR_SRCS) # 生成可執(zhí)行文件 add_executable(testvscode ${DIR_SRCS})
另一種情況下,main.cpp和自定義的cpp文件不在同一路徑下,如圖:
此時(shí),lib文件夾內(nèi)和外層目錄(有cpp文件的地方就要有CMakeLists.txt)都要編寫(xiě)CMakeLists.txt。
其中,lib文件夾內(nèi)CMakeLists.txt內(nèi)容如下:
# 枚舉指定目錄下的源文件,并添加到變量DIR_LIB_SRCS中 aux_source_directory(. DIR_LIB_SRCS) # 將源文件枚舉變量添加到LIB_SRCS庫(kù)文件中 add_library(LIB_SRCS ${DIR_LIB_SRCS})
而外層的CMakeLists.txt內(nèi)容如下:
# cmake最低版本號(hào)要求 cmake_minimum_required(VERSION 3.10) # 指定的項(xiàng)目名 project(testvscode) # 添加頭文件目錄 include_directories(include) # 添加lib子目錄 add_subdirectory(lib) #指定生成的可執(zhí)行文件,第一個(gè)參數(shù)為文件名 add_executable(${PROJECT_NAME} main.cpp) # 設(shè)置可執(zhí)行文件的輸出路徑 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) #添加連接庫(kù) target_link_libraries(${PROJECT_NAME} LIB_SRCS)
2.4cmake編譯
最后附上幾個(gè)C++頭文件和源文件代碼:
mathfunc.h
double scjfunc(double a, double b);
mathfunc.cpp
#include "mathfunc.h" double scjfunc(double a,double b) { return a*b*b; }
main.cpp
#include<iostream> #include"mathfunc.h" using namespace std; int main() { double a,b; cout<<"enter a and b: "<<endl; cin>>a>>b; cout<<"a*b*b= "<<scjfunc(a,b)<<endl; system("pause"); return 0; }
3.總結(jié)
初次使用cmake,記錄了一些使用心得,但不保證有些設(shè)置方法是最優(yōu)的,有些理解是正確的,后面會(huì)不斷學(xué)習(xí)不斷改進(jìn),也希望大家多提提意見(jiàn)。
注:如果cmake編譯出現(xiàn)“cmake-file-api 的代碼模型版本(2.1)不是預(yù)期版本。應(yīng)為 (2.0)。IntelliSense 配置可能不正確”錯(cuò)誤,參考(https://blog.csdn.net/nick_young_qu/article/details/107876532)解決。
到此這篇關(guān)于VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)VSCODE+cmake配置C++環(huán)境內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++算法之在無(wú)序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法
這篇文章主要介紹了C++算法之在無(wú)序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法,涉及C++數(shù)組的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-03-03C語(yǔ)言超詳細(xì)講解getchar函數(shù)的使用
C 庫(kù)函數(shù) int getchar(void) 從標(biāo)準(zhǔn)輸入 stdin 獲取一個(gè)字符(一個(gè)無(wú)符號(hào)字符)。這等同于 getc 帶有 stdin 作為參數(shù),下面讓我們?cè)敿?xì)來(lái)看看2022-05-05C語(yǔ)言深入回顧講解結(jié)構(gòu)體對(duì)齊
C 數(shù)組允許定義可存儲(chǔ)相同類(lèi)型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是 C 編程中另一種用戶(hù)自定義的可用的數(shù)據(jù)類(lèi)型,它允許你存儲(chǔ)不同類(lèi)型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C 的結(jié)構(gòu)體內(nèi)存對(duì)齊2022-06-06Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn)
自定義窗口控件的無(wú)邊框,窗口事件由于沒(méi)有系統(tǒng)自帶邊框,無(wú)法實(shí)現(xiàn)拖拽拉伸等事件的處理,本文主要介紹了Qt無(wú)邊框窗口拖拽和陰影的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01C++入門(mén)概覽和嘗試創(chuàng)建第一個(gè)C++程序
這篇文章主要介紹了C++入門(mén)概覽和嘗試創(chuàng)建第一個(gè)C++程序,同時(shí)也包括編寫(xiě)類(lèi)的示例展示C++面向?qū)ο蟮奶匦?需要的朋友可以參考下2015-09-09C/C++ 原生API實(shí)現(xiàn)線(xiàn)程池的方法
線(xiàn)程池,簡(jiǎn)單來(lái)說(shuō)就是有一堆已經(jīng)創(chuàng)建好的線(xiàn)程,接下來(lái)通過(guò)本文給大家介紹C/C++ 原生API實(shí)現(xiàn)線(xiàn)程池的方法,感興趣的朋友跟隨小編一起看看吧2021-11-11