iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 28
1
Software Development

這次我們不跳過 IDE系列 第 28

Day 28: 使用 VS Code 來開發 C++

前言

今天要介紹的,嚴格來說幾乎不太會使用在 Web 世界中,而是普遍應用在作業系統、硬體設備等,程式語言界效率的王者:C++

前提

使用 VS Code 開發 C++ 的前置作業有點複雜,以下記錄如何設定。

安裝 C++ 語言包

C_CPP_Logo
連結

安裝編譯器,Compiler

這邊最妙了,不同的作業系統有不同的安裝方式。:

  • Linux: GCC
  • Windows:
    • Mingw-w64
      • GCC 運用在 Windows。
      • 如果發佈的 C++ 程式會用運用在 Unix-like 系統,那建議使用。
    • Microsoft C++ Compiler
      • 微軟開發的 C++ 編譯器。
      • 如果發佈的 C++ 程式會用運用在 Windows 系統,那建議使用。
  • macOS: Clang for XCode

以下逐一說明如何安裝。

Linux - GCC

步驟如下:

  • 打開終端機,輸入:
sudo apt-get update # update the Ubuntu package lists.

# 以下可選擇
sudo apt-get dist-upgrade # download the latest versions of the system packages.
  • 安裝 GNU compiler tools & GDB debugger
sudo apt-get install build-essential gdb
  • 輸入以下指令,回傳路徑表示安裝成功:
whereis g++
# g++: /usr/bin/g++ /usr/share/man/man1/g++.1.gz
whereis gdb
# gdb: /usr/bin/gdb /usr/share/gdb /usr/share/man/man1/gdb.1.gz

Windows - Mingw-w64

步驟如下:

  • 安裝 Mingw-w64,建議將資料夾放在 C 槽,因此路徑會是:C:\Mingw-w64
  • 為了將 Mingw-w64 的路徑加入環境變數 PATH,打開 CMD,輸入:
setx path "%path%;c:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin"

Windows - Microsoft C++ Compiler

安裝方式有兩種:

  • 使用 Visual Studio Installer,開發語言選單內勾選 C++
  • 點擊此頁,下載 Microsoft Visual C++ Redistributable for Visual Studio 2019
  • 關掉 CMD,讓環境變數可以生效(有可能要重新啟動)。

macOS - Clang for XCode

mac 預設安裝 Clang,因此不需要什麼步驟。

檢查是否安裝成功

確認 Compiler 安裝成功的方法是:

  • 打開終端機、CMD,輸入:
g++ --help
# 筆者是 macOS,所以是 clang
#OVERVIEW: clang LLVM compiler

#USAGE: clang [options] <inputs>

#OPTIONS:
#...

建立專案

使用的作業系統是 macOS
使用的 workspace 資料夾名稱是:helloworld
編輯的檔案名稱:helloworld.cpp

使用 VS Code 開啟資料夾:helloworld,在進行編輯 C++ 之前,先進行底下三項設定。

c_cpp_properties.json

目的:設定 Compiler 路徑以及 IntelliSense。

步驟如下:

  • 按下 F1,輸入:C/C++: Edit Configurations (UI)
    • C_CPP_Configurations
  • 設定 編譯器路徑,Extension 會指向系統安裝 C++ Compiler 的位置,例如:
    • /usr/bin/clang
  • 設定 IntelliSense 模式,Extension 會使用系統安裝的 Complier。
  • 設定 包含路徑,如果有使用 header files 但沒有放在 workspace 內,就需要補充。
  • macOS 要多設定一項:進階設定 -> Mac 架構路徑,設定系統的 header files

設定完成後,c_cpp_properties.json 會存在 .vscode 資料夾內,設定的內容會是:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [
                "/System/Library/Frameworks",
                "/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

tasks.json

目的:Build 相關設定。

步驟如下:

  • 按下 F1,輸入並選擇:Tasks: Configure Default Build Task
  • 選擇:從範本建立 tasks.json 檔案
  • 選擇:Others
  • 將以下程式碼,完全覆蓋現有的。
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build with Clang",
      "type": "shell",
      "command": "clang++",
      "args": [
        "-std=c++17",
        "-stdlib=libc++",
        "helloworld.cpp",
        "-o",
        "helloworld.out",
        "--debug"
      ],
      "group": {
        "kind": "build",
        "isDefault": true
      }
    }
  ]
}

launch.json

目的:偵錯相關設定。

步驟如下:

  • 按下 F5,選擇 C++ (GDB/LLDB)
  • 將以下程式碼,完全覆蓋現有的。
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(lldb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/helloworld.out",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "lldb",
      "logging": {
        "trace": true,
        "traceResponse": true,
        "engineLogging": true
      }
    }
  ]
}

小試身手

  • 開啟 helloworld.cpp,貼上以下程式碼:
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
  vector<string> msg{"Hello", "C++", "World", "from", "VS Code!"};

  for (const string &word : msg)
  {
    cout << word << " ";
  }

  cout << endl;
}

結論

前置作業介紹完成!整體而言,設定的過程比起昨天的 Java 來得順暢許多。

環境設定好,就讓人想認真開發呢!


上一篇
Day 27: 使用 VS Code 來開發 Java
下一篇
Day 29: 使用 VS Code 來開發 Go
系列文
這次我們不跳過 IDE30

尚未有邦友留言

立即登入留言