一.安裝VSCode
1.通過官方PPA安裝Ubuntu make
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubuntu-make
2.使用命令安裝visual studio code(記住安裝目錄)
umake ide visual-studio-code
3.若安裝完成,圖標卻沒有出現
啟動器如果沒有顯示VSCode的圖標,可以進入剛安裝的目錄,執行“./code"運行,右鍵添加即可
4.卸載VSCode
umake ide visual-studio-code --remove
二.建立工程
(原博客:https://blog.csdn.net/weixin_43374723/article/details/84064644)
1.由於VScode是以文件夾的形式管理工程的,因此我們首先新建一個文件夾,我這里取名叫hello
2.然后通過VScode打開此文件夾
3.新建main.cpp文件並輸入程序
三.更改配置文件
1.添加構建(編譯、鏈接等)任務(tasks.json)
ctrl+shift+p打開命令行,輸入Tasks: Run task==》 Create tasks.json file from template, 生成默認的tasks.json文件。

2.更改配置文件(launch.json)
點擊左側的Debug按鈕,選擇添加配置(Add configuration),然后選擇C++(GDB/LLDB),將自動生成launch.json文件默認launch.json

3.和Makefile結合
修改的地方已用灰色標注
修改后的tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell", //任務執行的是shell命令
"label": "build", //和launch.json中的"preLaunchTask": "build-debug"相對應
"command": "/usr/bin/make", //表示執行make命令(注,文件夾下需要Makefile文件),在shell中使用命令,如需加參數,可再添加args屬性
}
]
}
修改后的launch.json
{
// 使用 IntelliSense 了解相關屬性。
// 懸停以查看現有屬性的描述。
// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", //啟動配置的下拉菜單中顯示的名稱
"type": "cppdbg", // 配置類型,這里只能為cppdbg
"request": "launch", // 請求配置類型,可以為launch(啟動)或attach(附加)
"program": "${fileDirname}/../hello", // 將要進行調試的程序的路徑和makefile中生成的可執行文件一致
"args": [], // 程序調試時傳遞給程序的命令行參數,一般設為空即可
"stopAtEntry": true, // 設為true時程序將暫停在程序入口處
"cwd": "${workspaceFolder}", // 調試程序時的工作目錄,一般為${workspaceFolder}即代碼所在目錄
"environment": [],
"externalConsole": true, // 調試時是否顯示控制台窗口
"MIMode": "gdb", // 指定連接的調試器,可以為gdb或lldb
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build" // 調試會話開始前執行的任務,一般為編譯程序。與tasks.json的"label"相對應( 一致),可根據需求選擇是否使用
}
]
}
四.makefile
(轉自:https://blog.csdn.net/weixin_38391755/article/details/80380786)
1.首先要把源文件編譯成中間代碼文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,這個動作叫做編譯(compile)。然后再把大量的Object File合成執行文件,這個動作叫作鏈接(link)。
2. 編譯時,編譯器需要的是語法的正確,函數與變量的聲明的正確。對於后者,通常是你需要告訴編譯器頭文件的所在位置(頭文件中應該只是聲明,而定義應該放在C/C++文件中),只要所有的語法正確,編譯器就可以編譯出中間目標文件。一般來說,每個源文件都應該對應於一個中間目標文件(.o 文件或是OBJ文件)。
3.鏈接時,主要是鏈接函數和全局變量,所以,我們可以使用這些中間目標文件(O文件或是OBJ文件)來鏈接我們的應用程序。鏈接器並不管函數所在的源文件,只管函數的中間目標文件(Object File),在大多數時候,由於源文件太多,編譯生成的中間目標文件太多,而在鏈接時需要明顯地指出中間目標文件名,這對於編譯很不方便,所以,我們要給中間目標文件打個包,在Windows下這種包叫“庫文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
4.我們要寫一個Makefile來告訴make命令如何編譯和鏈接這幾個文件。我們的規則是:
1.如果這個工程沒有編譯過,那么我們的所有C文件都要編譯並被鏈接。 2.如果這個工程的某幾個C文件被修改,那么我們只編譯被修改的C文件,並鏈接目標程序。 3.如果這個工程的頭文件被改變了,那么我們需要編譯引用了這幾個頭文件的C文件,並鏈接目標程序。
5.Makefile的規則
target... : prerequisites ... command ... ... -------------------------------------------------------------------------------
target也就是一個目標文件,可以是Object File,也可以是執行文件。還可以是一個標簽(Label),對於標簽這種特性,在后續的“偽目標”章節中會有敘述。
prerequisites就是,要生成那個target所需要的文件或是目標。
command也就是make需要執行的命令。(任意的Shell命令)
這是一個文件的依賴關系,也就是說,target這一個或多個的目標文件依賴於prerequisites中的文件,其生成規則定義在command中
注:
在看別人寫的Makefile文件時,你可能會碰到以下三個變量:$@,$^,$<代表的意義分別是:
他們三個是十分重要的三個變量,所代表的含義分別是:
$@--目標文件 $^--所有的依賴文件 $<--第一個依賴文件
6.一個示例
正如前面所說的,如果一個工程有1個頭文件,和2個C文件
//solution.h class Solution { public: void Say(); }; //solution.cpp #include <iostream> #include "solution.h" using namespace std; void Solution::Say(){ std::cout << "HI!" << std::endl; } //main.cpp #include "solution.h" int main () { Solution sln; sln.Say(); return 0; }
我們為了完成前面所述的那三個規則,我們的Makefile應該是下面的這個樣子的。
hello:main.o solution.o g++ -o hello main.o solution.o main.o:main.cpp solution.h g++ -g -c main.cpp solution.o:solution.h solution.cpp g++ -g -c solution.cpp clean: rm main.o solution.o hello
特別注意:command也就是make需要執行的命令前是一個Tab鍵
反斜杠(\)是換行符的意思。這樣比較便於Makefile的易讀。我們可以把這個內容保存在文件為“Makefile”或“makefile”的文件中,然后在該目錄下直接輸入命令“make”就可以生成執行文件edit。如果要刪除執行文件和所有的中間目標文件,那么,只要簡單地執行一下“make clean”就可以了。
五:cmake與CMakeLists.txt
(參考博客:https://blog.csdn.net/kai_zone/article/details/82656964)
六.opencv的安裝配合cmake使用
opencv的安裝:https://blog.csdn.net/jindunwan7388/article/details/80397700
官方文檔:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
