VScode 配置 C++ 環境進行編譯和調試


  這里記錄為 VScode 配置 C++ 環境的簡單步驟,實踐環境為 Ubuntu 18.04 ,VScode 1.27 。在 Ubuntu 環境下,系統默認安裝 gcc 和 g++ 編譯器,故而下列步驟均默認已有配置好的編譯環境,后續的步驟在此基礎上建立( 對於 Windows 而言,可能需要用戶自行配置對應的 C/C++ 編譯環境,如參考 C/C++ compiler and debugger )。 

 

  Index

  1. 安裝 VSCode 提供的 C++ 拓展  

  2. VSCode 打開源文件目錄

  3. VSCode 中進行 C++ 相關的編譯和調試

    3.1 c_cpp_properties.json - 編譯環境相關的設置

    3.2 task.json - 編譯參數設置

    3.3 launch.json - 調試相關的參數

  4.VScode 配置 Python 環境

  5.其他

    5.1 VScode 每次打開文件時只是覆蓋當前打開的文件,而不是在新的窗口打開文件

 

  安裝 VSCode 提供的 C++ 拓展

   VSCode 本質上為一個編輯器,提供基礎的文本編輯功能。想要使用 VSCode 進行特定語言如 C++ 程序的編譯和調試時,需要為其安裝對應的語言拓展( Extension ),從而讓 VSCode 具備對應語言相關的語法檢查、語法高亮等功能。VScode 提供多種方式進入拓展安裝界面,進行特定拓展的安裝。

  1.直接點擊界面左側的第五個對應拓展( Extension )插件的按鈕,或通過快捷鍵 Ctrl + Shift + x 進入拓展安裝界面;

  

  2.在搜索框中搜索關鍵字 "C++",並選擇第一個 C++ 拓展安裝即可( 下圖是筆者在安裝 Python 時的截圖 );

  

  進入拓展安裝界面的方式還包括 a) 通過 Ctrl + Shift + p 打開 VScode 命令行,輸入 Extension ,選擇下拉菜單中的 Extension:Install Extensions 菜單,同樣可以進入 2 中所示的界面;b) 點擊界面左下角的齒輪按鈕 -> Extensions 選項,可進入 2 中所示的界面;

  通過上述步驟正確的安裝 C++ 拓展工具之后,通過點擊插件上的 reload 按鈕或重啟 VScode 使插件生效,VSCode 即可支持基本的 C++ 相關的特性。

  ( VSCode 拓展還提供包括主題格式、各式工具等,用戶可以自行探索和使用 )

 

  VSCode 打開源文件目錄

  安裝 C++ 拓展使得 VSCode 具備了基本的語法高亮和檢查功能。為了在 VSCode 中可以進行程序的編譯和調試,還需要進行編譯和測試環境的配置。

  使用 VSCode 打開文件夾的方式有兩種:

  1) 命令行方式進入源程序所在目錄,通過命令 "code ." 在 VSCode 中打開上述源文件夾;

  2) 在 VSCode 的圖形界面中,直接通過 File -> Open Folder 選項,導航選擇對應的文件目錄並打開;

  上述兩種方式均會將新打開的目錄視為工作區( workplace ),並在該目錄下新建一個隱藏目錄 .vscode 來記錄對應的 vscode 的設置情況。在配置 C++ 環境時,與 C++ 程序的編譯和調試相關的配置文件即位於上述 .vscode 目錄中,以 json 文件的形式存在。下面對與 C++ 程序編譯,運行和調試相關的三個 json 配置文件進行介紹。

  注:須在源文件界面調出下列三個 json 文件,保證生成的文件所針對的對象是源文件,而不是其他。  

 

  VSCode 中進行 C++ 相關的編譯和調試

  c_cpp_properties.json - 編譯環境相關的設置

  該文件用於指定一般的編譯環境,包括頭文件路徑,編譯器的路徑等。通過 Ctrl + Shift + p 打開命令行,鍵入關鍵字 "C++",在下拉菜單中選擇 "C/C++ Edit configuration",系統即自動在 .vscode 目錄下創建 c_cpp_properties.json 文件,供用戶進行編譯方面的環境配置。默認的配置文件內容如下所示。

{
    "configurations": [
        {
            "name": "Linux",              //環境名 "includePath": [
                "${workspaceFolder}/**"   //指定頭文件路徑,這里指定的是當前工作目錄,如有需要在后面添加,添加方式是加入 "/to/path" 格式的路徑
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",   //編譯器的路徑,可根據自己的安裝情況進行設置 "cStandard": "c11",
            "cppStandard": "c++17",       //設置使用的 C/C++ 標准 "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

  上述配置文件中鍵的值一般已默認生成,若在開發時有所變動,直接修改上述值即可。

 

  task.json - 編譯參數設置

  該文件用於指定程序的編譯規則,即如何將源文件編譯為可執行程序。通過 Ctrl + Shift + p 打開命令行,鍵入關鍵字 "task",並在下拉菜單中選擇 Tasks: Configure Default Build Task -> Create tassk.json file from template -> Others ,系統即自動在 .vscode 目錄下創建 task.json 文件( 基礎模版 ),供用戶設置具體的編譯規則。

  注意此時僅生成了一個 task.json 的簡化模板,修改該文件中 label 鍵的值,再打開命令行,選擇 Tasks:Configure Default Build Task 選項,此時修改后的 label 名字會出現在選項欄中,此時選中該 label的名字,則對應的 task.json 文件會發生改變,並被設置為默認編譯對象( 即執行命令 Tasks: Run Build Tasks 時默認執行的是該 task.json 文件對應的編譯 ),其大致格式如下所示。用戶需要根據實際情況對其中的鍵值進行修改。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build hello world",       //當前編譯任務的名字
      "type": "shell",
      "command": "g++",                   //編譯時執行的程序
      "args": ["-g", "-o", "helloworld", "helloworld.cpp"],    //傳遞給 command 的參數,也就是編譯參數
      "group": {
        "kind": "build",
        "isDefault": true                 //為 True 時,用戶可以通過 Ctrl+Shift+B 直接運行編譯任務 
      }
    }
  ]
}

  上述文件中,通過 command 選項指定編譯運行的程序,通過 args 選項給定了傳遞給編譯程序的參數,當 isDefault 為 True 時(默認),用戶使用 Ctrl+Shift+b 即可直接運行編譯過程,或者也可以通過 Ctrl+Shift+p 打開命令行,選擇 Tasks:Run Build Task 運行上述編譯過程。( 從上述過程可以看出,tasks.json 規定了具體的執行編譯過程的程序,也就是說實際上可以通過絕對路徑來給出 command 進而無視 c_cpp_properties.json 中的 compilerPath 路徑 )

  在編譯成功后,可通過命令行運行編譯成功的可執行程序。

 

  launch.json - 調試相關的參數

  該文件主要與程序的調試相關。用戶可通過 Ctrl+Shift+p 打開命令行,鍵入關鍵字 "launch",選擇 "Debug:Open launch.json" -> "C++(GDB/LLDB)",即可打開調試的配置文件 launch.json。該文件設置 VScode 在調試時的基本內容和要求.在配置好 launch.json 文件后, 按 F5 即可進入調試模式。launch.json 文件的基本選項如下所示。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/helloworld",        //可執行文件的完整路徑,文件名與 build.json 中生成的可執行文件名保持一致
            "args": [],
            "stopAtEntry": false,           //是否在 main 函數處暫定執行
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,        //在打開外部終端執行程序,而不是在 VSCode 的控制台中運行
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

  在上述文件配置好后,用戶通過 F5 即可進入調試模式。注意,只有生成可執行程序時加入了編譯選項 -g ( 如本例中,build.json 文件中的 args 部分包括 -g 選項 ),上述可執行文件才可以通過 gdb 進行調試。

 

  參考

  C/C++ for VScode

  Linux 下使用 VSCode 的編譯和調試 : Using Mingw-w64 in VS Code

  Configuring C/C++ debugging 

  Debugging in Visual Studio Code

  VScode 操作: Visual Studio Code的基本使用

 

 

   VScode 配置 Python 環境

  VScode 配置 Python 環境與 C++ 環境步驟相似。首先需要為 VSCode 安裝相應的 python 拓展,見前文 安裝 VSCode 拓展 部分。

  之后,為了能夠順利的運行 Python 程序,用戶還需要選擇合適的 Python 解釋器( 要求系統上已經安裝了 Python 解釋器 )。用戶可以通過 Ctrl + Shift + p 打開命令行,並輸入命令 Python:Select Interpreter ,系統會列出當前系統已安裝的解釋器的信息,用戶可以根據需要進行選擇。

   

  注意,上述對 Python 解釋器的設置根據設置的環境不同作用效果也有所不同。若在設置 Python 解釋器時用戶並沒有在 VScode 中打開項目文件夾,則此時是將選中的 Python 解釋器設置為全局默認的解釋器,即后續使用 VScode 打開的 Python 項目默認會使用該解釋器。而用戶若在特定的工作目錄下選擇該解釋器,則后續該工作目錄運行時即使用選中的解釋器。

  參考

  Python in Visual Studio Code  

 

  其他 

  VScode 每次打開文件時只是覆蓋當前打開的文件,而不是在新的窗口打開文件

  解決方式 : 查看打開的窗口中文件名的顯示方式,當文件名為斜體時,如下左圖所示,表示其為 "預覽模式",此時單擊其他文件時,新的文件預覽會覆蓋當前窗口的 "預覽" 內容,所以新文件也在當前窗口打開。對應的,VSCode 中非預覽窗口文件名以正常字體顯示,后續稱為正常窗口,如下右圖所示。

    

  另一種打開文件的方式為選中目標文件並雙擊,則表示需要直接打開該文件,此時 VSCode 的行為根據當前窗口的性質而定: (1) 若當前窗口為正常窗口( 而不是預覽窗口 ),則雙擊新文件會使得 VScode 在新建的窗口中打開該文件; (2) 若當前窗口為一個預覽窗口( 前面提到過的文件名斜體顯示 ),則雙擊新文件會使得 VSCode 直接在當前窗口中打開新文件,此時當前窗口變成一個正常窗口。

  總結而言,單擊是 "預覽" 文件,若當前窗口為預覽窗口,則直接覆蓋本窗口內容,並保持預覽窗口的性質,若當前窗口為正常窗口,則會新建一個文件窗口進行預覽;雙擊是 "打開" 文件,若當前窗口為預覽窗口,則直接在當前窗口打開文件,窗口變為正常窗口,若當前窗口本身是正常窗口,則在新建的窗口中打開文件。

  更簡單粗暴的解決方法是直接關閉 VSCode 的預覽模式,在筆者的 VSCode 1.39.1 中,是通過 Ctrl + Shift + p 打開 Preferences : Open Workspace Settings 打開設置,在 Workspace -> Workbench -> Editor Management -> Enable Preview 中,取消 Enable Preview 項的勾選即可關閉預覽選項。

  對於不同的 VSCode 版本,可能需要手動設置 settings.json 文件,此時可在文件中加入如下設置,即關閉預覽。注意上述設置中,在 Workspace 中設置表示僅應用於當前項目,對 User 設置則表示對本用戶打開的所有項目均生效。

    "workbench.editor.enablePreview": false      #設置關閉預覽

  參考 : vs Code打開新的文件會覆蓋窗口中的,怎么改 - 第一個回答

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM