Visual Studio Code C++多文件編譯運行


筆者在C++ PrimerPlus的學習過程中遇到了多個源文件編譯運行的問題,由於筆者使用的是VSCode,軟件本身並不支持多個源文件編譯運行,可以通過一些方法來使VsCode支持多文件編譯運行。筆者經研究發現,有三種方法:分別是基於g++命令、基於Cmakelist方法、以及最簡單的安裝工程插件法,第二種方法可以加深對編譯過程的理解和VsCode的json配置文件的理解,推薦大家可以嘗試試一下。
本文以一個交換函數為示例,演示了這三種方法。
Vscode工作區目錄如下:
image
其中各文件內容如下:
頭文件:

void swap(int &a, int &b);

主函數源碼文件:

#include<iostream>
#include"swap.h"
using namespace std;


int main()
{
    int val1 = 10;
    int val2 = 20;
    cout << "Before swap:\n";
    cout << "val1 = " << val1;
    cout << ", val2 = " << val2 << endl;
    swap(val1, val2);
    cout << "after swap:\n";
    cout << "val1 = " << val1;
    cout << ", val2 = " << val2 << endl;

    return 0;
}

交換函數源碼文件:

// swap.cpp
#include"swap.h"
void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

1.基於g++命令

1.1 打開終端,點擊菜單去終端的新建終端,打開終端窗口;
1.2 g++編譯多文件,生成帶調試信息的可執行文件
命令如下:

g++ -g .\main.cpp .\swap.cpp -o main

其中 -g 后面是兩個源代碼文件的名稱,-o 后面是生成exe文件的名稱
執行后會生成一個exe文件
如圖所示:
image
1.3 直接在終端運行該文件,命令為:

.\main.exe

運行結果如下:
image
1.4 要想調試該函數,需要修改launch.json文件。
點擊運行調試會產生一個tasks.json文件,一個launch.json文件,但無法成功調試,如圖所示:
image
點擊open'launch.json',修改文件,該文件中有兩個關鍵參數,一個是program:另一個是preLaunchTask:如下圖所示:
image
將preLaunchTask:注釋掉,該行會在調試前運行tasks.json,先注釋掉,將program:的參數修改成

"program": "${workspaceFolder}/main.exe",

修改后如下圖所示:
image
點擊運行調試,發現可以調試運行。

2. 基於Cmakelist

該方法需要安裝cmake環境,安裝方法可以參考這位大佬的教程
安裝cmake教程
2.1 編寫最簡單的CMakeLists.txt

project(MYSWAP) // 工程名

add_executable(my_cmake_swap main.cpp swap.cpp) // 生成exe文件名,需要編譯的源函數文件名稱

編寫完保存之后會生成一個build文件夾,里面包括編譯文件所需的一些信息。
2.2 生成build文件夾之后在終端輸入cd build,進入該文件夾
2.3 在命令行輸入cmake ..
注:如果電腦上已經安裝了VS,應該會調用微軟MSVC編譯器,使用(cmake -G "MinGW Makefiles" ..)代替(cmake ..)即可
僅第一次使用cmake時使用(cmake -G "MinGW Makefiles" ..) 后面可使用(cmake ..)

結果如下:
image
2.4 接着在命令行輸入mingw32-make.exe,編譯文件鏈接文件,之后的結果如下:
image
生成 my_cmake_swap.exe文件在build目錄下,如下圖所示:
image
2.5 修改launch.json文件,和第一中方法一樣,修改program:
修改的代碼如下:

"program": "${workspaceFolder}/build/my_cmake_swap.exe",

接下來運行文件,運行結果如下:
image
2.6 該代碼可以調試文件,但是在修改源代碼文件之后,直接運行,文件並不會重新編譯,要相解決這個問題,重新編寫tasks.json文件。重新編寫的tasks.json的文件如下:

{
    "version": "2.0.0" ,// 多文件編譯的tasks
    "options": {
        "cwd": "${workspaceFolder}/build"
    },
    "tasks": [
        {
            "type": "shell",
            "label": "make",
            "command": "cmake",
            "args": [
                ".."
            ]
        },
        {
            "label": "make",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "command":"mingw32-make.exe",
            "args": [

            ]
        },
        {
            "label": "Build",
            "dependsOn":[
                "cmake",
                "make"
            ]
        }
    ]
}

2.7 修改完tasks.json文件,還需要修改launch.json文件的preLaunchTask:這一行,修改為"preLaunchTask": "Build"便可將文件鏈接起來,修改如下圖所示:
image

3. 安裝C/C++ Project Generator插件,如下圖所示:

image
該插件會自動幫我們完成CMakeList文件的編寫以及json文件的修改。
3.1 按下crtl+shift+p,輸入create,找到Create C++ project,如下圖所示:
image
點擊它,產生一個選擇文件夾的窗口,選擇或者創建一個C++項目文件夾。
創建后如下圖所示:
image
3.2 在include文件夾添加頭文件,在src文件夾添加源函數文件,然后運行就可以
注:主函數的文件必須命名為main.cpp
如下圖所示:
image
點擊調試運行,就可以完成。

總結:
VsCode的自定義功能很強大,通過實現其多個文件編譯運行,是我對C++的文件單獨編譯運行有了一個比較深刻的認識,中間也遇到了很多問題,最終查找解決的這些問題,特別感謝bilibili的一個視頻,讓我入門了Cmakelist,大家想看的話,視頻鏈接如下:
VsCode環境配置及多文件編譯運行


免責聲明!

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



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