VSCode C++ 使用Cmake編譯多個文件


VSCode 中對編譯運行單個文件時非常友好,基本上不用配置,自動生成的即可運行,
或者安裝Code Run 也可以很方便的運行起來,但是對於有多個類文件存在的情況下,就很糟糕,
我了解到有兩種方式來支持

  1. task.json 中編譯的參數
  2. 引入cmake編譯 CMakeLists.txt文件

launch.json

{
    // 使用 IntelliSense 了解相關屬性。 
    // 懸停以查看現有屬性的描述。
    // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和調試活動文件",
            "type": "cppdbg",
            "request": "launch",
            // "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "program": "${workspaceFolder}\\build\\outProject.exe",     // 運行編譯之后的文件,需要與CMakeLists.txt 文件中定義的保持一致!!!
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\dev\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "為 gdb 啟用整齊打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // "preLaunchTask": "C/C++: g++.exe build active file"
            "preLaunchTask": "Build"        // 指定調用 task.json 腳本中的  Build 任務
        }
    ]
}

cmake 編譯步驟

1、編寫 CMakeLists.txt 文件 寫好需要生成的文件名稱,以及需要編譯的文件
add_executable(outProject main.cpp swap.cpp)
2、進入 build 目錄下執行 "cmake .." 命令
3、執行make命令,觸發編譯 ,windows 平台可以調用mingw64下的 mingw32-make.exe 來編譯

task.json

{
    "version":"2.0.0",
    "options": {                             
        "cwd": "${workspaceFolder}/build"    // 調用該task.json 任務時,首先進入到 build目錄下
    },
    "tasks": [
        { 
            "type": "shell",
            "label": "cmake",          // 構造  "cmake .. " 命令
            "command":"cmake",
            "args": [
                ".."
            ]

        },
        {
            "type": "shell",
            "label": "make",       // 使用make命令來編譯,當前window下使用到了mingw64 下的mingw32-make.exe 來觸發
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command":"mingw32-make.exe"
        },
        {
            "label": "Build",    // launch.json 文件中調用的 "preLaunchTask": "Build",會調用到此Task
            "dependsOn":[        // 該task下依賴其他兩個任務 cmake 、make 任務
                "cmake",
                "make"
            ]

        }

    ],

}

CMakeLists.txt

project(my_swap)

# 一個依賴類的編譯 
# 參數含義outProject  編譯之后的exe 文件  需要編譯的源碼文件 如果有多個可以依次寫
add_executable(outProject main.cpp swap.cpp)  


免責聲明!

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



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