VSCの使用の初期段階


VSCとは
Visual Studio Codeは、軽量で強力なソースコードエディタであり、デスクトップで実行でき、Windows、MacOS、Linuxにも使用できます。VSコードは、JavaScript、Type Script、Node.jsなどの一連のシステムを含み、様々な言語拡張が可能である(C+、C#、Java、Python、PHP、Go)。
簡単に言うとnotepad+comppiler+extensionsです。
VSCの特徴
以前にもVSCDEを使ったことがありません。ずっとVS、Qtというツールを使っていましたが、本当にVSCDEを使ってみたら、実際にVSCDEの使い方を知ると、このツールは比較的簡単に使えます。主な特徴は:
  • クロスプラットフォーム。VSCDEは、macOS、Linux、Windows OS
  • で動作することができます。
  • は軽くて柔軟です。VSCDEは最初にインストールされたのは開発プロセス共有の基本的なコンポーネントだけで、エディタ、ファイル管理、ウィンドウ管理、オプション設定、JavaScript/Type Script言語サービス、Node.jsコーディネーターなどの基本的な機能を実現しました。
  • は拡張可能である。VSコード拡張は、以下の内容に対するサポートを追加することができる。
  • 言語:C+、C#、Go、Java、Python
  • ツール:ESLint,JSHint,PowerShell
  • デバッタ:Chrome、PHP XDebug。
  • キーボードマッピング:Vim、Sublime Text、IntelliJ、Emacs、Atom、Visual Studio、Eclipse
  • ハローワールド
    この部分は実際の例でVSCDEの使用方法を説明し、プラットフォームはLinuxであり、プログラミング言語はC/C++である。
    前提条件
  • GCC
  • GDB
  • VSC
  • 建設工事
    VSCDEはVSと違って、Qtは直接に工事を新築することができます。VSCDEでは自分でマニュアルでプロジェクトディレクトリを作成する必要があります。このようなファイルは後で自動的に生成されますので、新しいフォルダを作成する必要はありません。CMak Lists.txtのようなファイルをフォルダに含める必要はありません。
    VSCDEを開き、メニューバーの中のFileを利用して新しいフォルダを開きます。このフォルダはプロジェクトディレクトリです。
    コード編集
    まず簡単なハローワールドのプログラムを書きます。
    // main.cpp
    #include 
    
    using namespace std;
    
    int main()
    {
        cout<
    v scode
    デフォルトでは、プロジェクトディレクトリに隠しディレクトリが自動的に生成されます。vscodeは、主に3つのファイルが含まれています。
  • task.json(コンパイラ構築設定)
  • launch.json(デバッタ設定)
  • c_cpp_properties.json(コンパイラパスとIntelliSense設定)
  • もしあなたがこの隠しフォルダを見ていなくても大丈夫です。上記の3つのファイルのいずれかを構築すると、隠しフォルダが生成されます。
    ここから見ると、この隠しフォルダはQt中のプロファイルのようです。
    task.json
    コードはもう書き終わりましたので、次はブリードtaskです。
    メインメニューでは、Terminal>Configre Default Build Taskを選択します。ドロップダウンリストが表示され、C++コンパイラの様々な事前定義の構築タスクが表示されます。C/C+::g++build active fileを選択します。
    これは.vscodeフォルダにtaskys.jsonファイルを作成してエディタで開きます。taskys.jsonファイルは以下のJSONに類似していなければならない。
    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558 
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "g++ build active file",
                "command": "/usr/bin/g++",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}/${fileBasenameNoExtension}"
                ],
                "options": {
                    "cwd": "/usr/bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
    隠しファイルディレクトリが表示されます。vscodeは自動的に作成されます。上のパラメータは:
  • Commmand:実行するプログラムを指定します。この場合はg++
  • です。
  • Ags:g++に渡すコマンドラインパラメータを指定します。パラメータはコンパイラの希望する順序で指定しなければならない
  • Label:ジョブリストで見た値で、自由に
  • と命名できます。
  • Group:「isDefault」:true指定Ctrl+Shift+Bを押すとこのタスクが実行されます。この属性は利便性のためだけに、falseに設定すれば、まだterminalメニューのTask:Run Build Taskを介して
  • を実行することができます。
    このタスクは、活動ファイルをg++に取得してコンパイルし、現在のディレクトリ($file Dirname)にアクティブファイルと同名の拡張子($fileBasename Notension)がない実行ファイルを作成します。例はmainです。
    プログラムを実行
  • は、main.cppに戻り、ジョブはアクティブファイルを構築する。
  • はtask.jsonで定義された構築タスクを実行し、Ctrl+Shift+BまたはterminalメニューからRun Build Taskを選択します。
  • ジョブが起動すると、統合端末パネルがソースコードエディタの下に表示されます。タスクが完了すると、端末はコンパイラの出力を表示し、ビルドが成功したか失敗したかを示します。
  • は+ボタンを用いて新しい端末を作成し、WSLコンテキストでbash端末を実行し、現在のフォルダを作業ディレクトリとする。
  • この時、端末でメールを実行することができます。
  • launch.json
    この場合はタスクを構築するだけで実行可能なプログラムが生成されますが、デバッグするにはlaunch.jsonを使ってデバッタを設定する必要があります。
  • メニューバーでRun>Add Configrationを選択し、C+(GDB/LLDB)
  • を選択する。
  • はその後、様々な事前定義のデバッグ構成のプルダウンリストが表示される。g++build and debug active file
  • を選択します。
  • VS Codeはlaunch.jsonファイルを作成して、エディタの中で開けます:
  • {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "g++ - Build and debug active file",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "g++ build active file",
                "miDebuggerPath": "/usr/bin/gdb"
            }
        ]
    }
     上のパラメータで:
  • Program:デバッグするプログラムを指定します。ここではアクティブファイルフォルダ$fileDirnameと拡張子のないアクティブファイル名に設定されています。もしhello world.cppがアクティブファイルであれば、hellworld
  • です。
  • デフォルトの場合、C++拡張はソースコードに任意のブレークポイントを追加しないので、stopAtEntry値はfalseに設定されます。stopAtEntEntry値がtrueの場合、デバッグが起動されたときにmainメソッドによって停止されます。
    デバッグコード
  • は、イベントファイル
  • にするために、main.cppを返します。
  • は、F 5またはメインメニューからRun'Start Debugingを選択します。この時、ユーザーインターフェースにいくつかの変更があります。
  • 集積端末はソースコードエディタの下にある。Debug Outputタブでは、デバッグが起動し、
  • を実行していることを示しています。
  • エディタは、メインメソッドの最初のステートメントを強調表示します。これはC++拡張自動設定のブレークポイント
  • です。
  • 左側のrunビューにデバッグ情報
  • が表示されます。
  • コードエディタの上部には、デバッグ制御パネル
  • が表示されます。
    デバッグコントロールパネルの使い方は他のIDEとほぼ同じです。
    WATCH
    デバッグする時、左側の枠にWATCHの欄が現れます。WATCHを利用して変数の追跡ができます。
  • WATCHウィンドウで、プラス記号をクリックし、テキストボックスにvar(変数名)を入力すると、手順を逐次調整できます。変数はWATCH
  • にずっと表示されていることが分かります。
  • ブレークポイントが開いているときには、どの変数の値もすばやく確認するために、マウスポインタを使ってその上にぶら下げることができます。
    c_cpp_properties.json
    プログラムには通常いくつかのサードパーティライブラリが使用されていますが、サードパーティライブラリのヘッダファイルを使用するには、このファイルにヘッダファイルディレクトリを追加する必要がありますが、このとき追加されたヘッダファイルディレクトリはプログラムのためのより多くの方法であり、インテリジェントな知覚を実現するためのものであり、真のリンクはありません。
    本当のリンクはtask.jsonファイルにパラメータを設定する必要があります。正常にコンパイルできます。
    コマンドC/C++++:Edit Configrations(UI)は、Command Palette(Ctrl+Shift+P)から実行されることにより、C/C++構成UIを参照することができます。
  • ここで変更すると、VS Codeが書き込みを変更します。vscodeフォルダのc_cpp_properties.jsonファイルにあります。
  • は、プログラムが作業空間または標準ライブラリパスに含まれていないヘッダファイルを含む場合のみ、includeepath設定を変更する必要がある。
  • 外部ライブラリリンクの例
    外部ライブラリのリンクが必要な場合は、少なくともtasky.jsonでヘッダファイルと外部ライブラリのリンクを行う必要があります。コードヒントなどの知能感知機能を使うなら、修正が必要です。 c_cpp_properties.jsonファイルです。
    外部ライブラリへのリンクが必要な場合を、以下のC言語の例で簡単に説明します。
    // main.c
    #include 
    #include 
    
    int main()
    {
        printf("insert a node from tail
    "); ND *head = createListTail(); // printf("insert a node from head
    "); // ND *head = createListHead(); printf("traval all node using next
    "); travalListNext(head); printf("insert a node
    "); insertList(head,10); travalListNext(head); // printf("traval all node using pre
    "); // travalListPre(head); printf("calculate the length of list
    "); int length = lenList(head); printf("The length of list is %d
    ",length); printf("search a node in list from single direction
    "); ND *pp = searchNodeSdir(head,10); printf("The search node is %d
    ",pp->data); // printf("search a node in list from both direction
    "); // pp = searchNodeBdir(head,10); // printf("The search node is %d
    ",pp->data); printf("delete a node
    "); deleteNode(pp); travalListNext(head); printf("sort list by swap data
    "); sortSwapData(head,9); travalListNext(head); // printf("sort list by swap pointer
    "); // sortSwapPointer(head,9); // travalListNext(head); printf("destroy list
    "); destroyList(head); }
    // tasks.json
    {
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "gcc build active file",
                "command": "/usr/bin/gcc",
                "args": [
                    "-g",
                    "${file}",
                    "-I",
                    "~/libr",
                    "-L",
                    "~/libr",
                    "-l",
                    "node",
                    "-o",
                    "${fileDirname}/${fileBasenameNoExtension}"
                ],
                "options": {
                    "cwd": "/usr/bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
    // launch.json
    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "gcc - Build and debug active file",
                "type": "cppdbg",
                "request": "launch",
                "program": "${fileDirname}/${fileBasenameNoExtension}",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "gcc build active file",
                "miDebuggerPath": "/usr/bin/gdb"
            }
        ]
    }
    // c_cpp_properties.json
    {
        "configurations": [
            {
                "name": "Linux",
                "includePath": [
                    "${workspaceFolder}/**",
                    "~/libr/**"
                ],
                "defines": [],
                "compilerPath": "/usr/bin/gcc",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "clang-x64"
            }
        ],
        "version": 4
    }
  • このプロジェクトに必要なコンパイラはgccで、g++
  • ではありません。
  • c_にあればcpp_properties.jsonファイルにinclude Pathパラメータのためのヘッダファイルがありません。 #includeではアンダースコアが表示されます。つまりエディタではこの関数が見つからないですが、実際にコンパイルできます。
  • は、task.jsonファイルに−I,−L,−lなどのパラメータを追加し、これらのパラメータはヘッダファイルと外部リンクライブラリを含んでいる。
  • デバッグが必要でないなら、launch.jsonファイルを追加しなくてもいいです。
    よくあるエラー
    構築または調整を開始すると、xx.cppはアクティブファイルではない場合、最も一般的なエラー原因(undefined mainまたはatempting to link with file built for unknown-unsuppored file formatなど)。これはコンパイラがソースコードではないコンテンツをコンパイルしようとしているからです。
    したがって、タスクを実行するときは、現在のアクティブファイルがmain関数を含むファイルであることを必ず保証します。