VSCODE+cmake配置C++開發(fā)環(huán)境的實現步驟
1.引言
在實習期間,感受到在vs code上編程的優(yōu)勢(實習期間主要寫的lua腳本),因此想把C++和python的開發(fā)也遷移到vs code上。如果只運行一個簡單的.cpp文件,那么使用萬能的Code Runner插件就可以完成編譯等任務。但是,一般的C++開發(fā)中,不可能只有一個.cpp文件,還會自定義頭文件和相應的源文件,此時Code Runner就無法滿足我們的要求。對于編譯多個C++源文件,我網上查到的資料主要有兩種方法:
(1)配置tasks.json文件
在tasks.json文件設置args參數,制定需要編譯的多個文件
(2)cmake編譯多個C++源文件
2.cmake配置過程
2.1 預先安裝
在windows環(huán)境下,首先預先完成如下安裝
(1)安裝vscode
(2)安裝MinGW,并添加到環(huán)境變量
(3)安裝cmake,并添加環(huán)境變量
(4)vscode C++和cmake相關插件安裝,如圖

2.2 vscode cmake配置
(參考:http://www.dbjr.com.cn/article/207289.htm)
(1)選擇vscode左上角,文件->首選項->設置->擴展中找到cmake tools configuration及Cmake: Preferred Generators,如圖打開settings.json文件

并增加如下配置,因為我們使用的是MinGW,mingw對應首選生成器MinGW Makefiles
{
"cmake.preferredGenerators": [
"MinGW Makefiles"
]
}
(2)同樣是在擴展一項中,找到cmake configuration,并將Cmake Path設置為前面cmake的安裝路徑,如圖

在vscode終端中進行如下驗證,看是否成功

(3) c_cpp_properties.json配置
(參考:http://www.dbjr.com.cn/article/171801.htm)
按下ctrl+shift+p,搜索c++ config,打開c_cpp_properties.json文件

在該文件中主要有三個參數需要修改:
- compilerPath,自己安裝的MinGW編譯器路徑
- intelliSenseMode,根據智能提示修改就行
- configurationProvider
如圖

2.3 CMakeLists.txt文件編寫
(參考:http://www.dbjr.com.cn/article/207291.htm,http://www.dbjr.com.cn/article/207293.htm)
CMakeLists.txt文件編寫分為兩種情況,一種是main.cpp和其他自定義的cpp文件在同一路徑下,如圖

main.cpp和mathfunc.cpp都在lib目錄下,此時,CMakeLists.txt文件內容如下:
# cmake最低版本要求
cmake_minimum_required(VERSION 3.10)
# 項目名名稱
project(testvscode)
# 頭文件路徑
include_directories(include)
# 枚舉指定目錄下的源文件,并添加到變量DIR_SRCS中
aux_source_directory(./lib DIR_SRCS)
# 生成可執(zhí)行文件
add_executable(testvscode ${DIR_SRCS})
另一種情況下,main.cpp和自定義的cpp文件不在同一路徑下,如圖:

此時,lib文件夾內和外層目錄(有cpp文件的地方就要有CMakeLists.txt)都要編寫CMakeLists.txt。
其中,lib文件夾內CMakeLists.txt內容如下:
# 枚舉指定目錄下的源文件,并添加到變量DIR_LIB_SRCS中
aux_source_directory(. DIR_LIB_SRCS)
# 將源文件枚舉變量添加到LIB_SRCS庫文件中
add_library(LIB_SRCS ${DIR_LIB_SRCS})
而外層的CMakeLists.txt內容如下:
# cmake最低版本號要求
cmake_minimum_required(VERSION 3.10)
# 指定的項目名
project(testvscode)
# 添加頭文件目錄
include_directories(include)
# 添加lib子目錄
add_subdirectory(lib)
#指定生成的可執(zhí)行文件,第一個參數為文件名
add_executable(${PROJECT_NAME} main.cpp)
# 設置可執(zhí)行文件的輸出路徑
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#添加連接庫
target_link_libraries(${PROJECT_NAME} LIB_SRCS)
2.4cmake編譯

最后附上幾個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.總結
初次使用cmake,記錄了一些使用心得,但不保證有些設置方法是最優(yōu)的,有些理解是正確的,后面會不斷學習不斷改進,也希望大家多提提意見。
注:如果cmake編譯出現“cmake-file-api 的代碼模型版本(2.1)不是預期版本。應為 (2.0)。IntelliSense 配置可能不正確”錯誤,參考(https://blog.csdn.net/nick_young_qu/article/details/107876532)解決。
到此這篇關于VSCODE+cmake配置C++開發(fā)環(huán)境的實現步驟的文章就介紹到這了,更多相關VSCODE+cmake配置C++環(huán)境內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

