1. 程式人生 > >在Mac下配置用VSCode編寫C/C++程式的環境

在Mac下配置用VSCode編寫C/C++程式的環境

##前言
   最近需要編寫一些C/C++程式,由於體量都不是很大所以想要追求一個輕量化的編輯和編譯環境,於是想起了在Dock欄吃灰的VSCode。通過查詢資料,包括VSCode的官方文件,最終配置實現了Mac下基於VSCode的C/C++編輯環境搭建。

##正文
   在配置環境之前先檢查一下機器上都安裝了什麼C++編譯器,通過以下兩條命令可以檢視是否安裝了g++/clang編譯器,本人兩種編譯器都有裝所以其結果如下圖所示。

g++ --version
clang++ --version

這裡寫圖片描述
這裡寫圖片描述
   然後回到VSCode去安裝如下圖所示的兩款外掛,以獲得C++語法高亮、錯誤檢查和除錯等功能。
這裡寫圖片描述
這裡寫圖片描述


   那麼,前期準備工作完成後進入具體的配置階段。首先在目錄下新建一個資料夾作為工程目錄,然後在VSCode中開啟該資料夾。在裡面新建一個cpp檔案命名為main.cpp。隨意寫點程式在裡面。
這裡寫圖片描述
這裡寫圖片描述
   然後點選側邊欄的Debug按鈕,點選設定圖示,便會提示你選擇環境,這裡就選擇C++那一項。
這裡寫圖片描述
   此時VSCode會在你的工程目錄下自動新建一個.vscode的資料夾,並新建了一個launch.json的檔案,這裡需要對生成的檔案進行一些小改動。本人配置如下:

{
    // 使用 IntelliSense 瞭解相關屬性。 
    // 懸停以檢視現有屬性的描述。
    // 欲瞭解更多資訊,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/a.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}

   儲存後按快捷鍵⇧⌘B編譯,此時會出現提示沒有找到要執行的生成任務,所以接下來將進行生成任務的配置工作,VSCode提供了一些模版,有需要的可以自行選擇,這裡就選則Others。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
此時.vscode目錄下會出現一個task.json檔案,對它進行改寫。本人配置如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "hello world",
            "type": "shell",
            "command": "clang++",
            "args": [
                "main.cpp"
            ],
            "group": {
                "kind":"build",
                "isDefault": true
            }
        }
    ]
}

儲存後再次按快捷鍵⇧⌘B就能夠順利編譯了,編譯完成後按F5執行,得到輸出結果。
這裡寫圖片描述

##其他
   每次編譯完成後,我們會發現目錄下多了一個a.out檔案,這個檔案是Linux/Unix環境下編譯器編譯原始碼並連線產生的可執行檔案,在未指定的情況下其預設命名為a.out。那麼如何通過修改配置檔案來修改這個檔案的命名呢?
   方法很簡單,在task.json中的args屬性下填入-o yourfilename.out,以本人的配置作為示例:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "hello world",
            "type": "shell",
            "command": "clang++",
            "args": [
                "-o app.out",
                "main.cpp"
            ],
            "group": {
                "kind":"build",
                "isDefault": true
            }
        }
    ]
}

可以發現這裡的command和args兩個屬性就相當於在命令列中執行了clang++ -o yourfilename.out main.cpp,所以如果還有其他的需求也可以對這裡進行改寫。最後不要忘記修改launch.json中的program屬性,將.out的檔名修改為與task.json一致。便可以成功編譯執行了。編譯後結果如下圖:
這裡寫圖片描述