66
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Visual Studio CodeでC/C++プログラミング

VS CodeでC/C++プログラミング方法。Remote Development拡張機能を使って、Windows端末からLinux環境の開発をしているので、コンパイラー設定等はLinux環境の内容になっているが、別環境でもほぼ同じだと思う。Linux環境には、gccとgdbをインストールしておくこと。

C/C++ extension for VS Codeのインストール

VS CodeのExtension画面でC/C++を検索し、C/C++拡張機能をインストール。

VS_Code_C_Extension.png

作業フォルダの作成

ソースコードを配置するフォルダを適当に作成する。作成したフォルダをVS CodeからFile -> Open Folder...で開く。
以降の設定を終えると、このフォルダ内に.vscodeフォルダが作成され、下記の3個のファイルが作成される。

  • c_cpp_properties.json (IntelliSense設定)
  • tasks.json (Build設定)
  • launch.json (Debugger設定)

IntelliSense設定

  1. コマンドパレット(F1)にC/C++と入力し、C/C++: Edit Configurations (UI)を実行
  2. 開いたC/C++ ConfigurationsタブのCompiler pathにコンパイラのフルパス(Linuxの場合、/usr/bin/gcc等)を入力。
  3. Include pathにヘッダファイルのフルパス(Linuxの場合、/usr/include/**等)を入力。ディレクトリの最後に**を入力すると、配下のディレクトリを再帰的に検索する。
  4. C/C++ Configurationsタブを閉じる。

これにより、.vscodeディレクトリにc_cpp_properties.jsonが作成される。

Build設定

  1. File -> New Fileを選択し、新規ソースファイルを作成。
  2. 適当にソースを記述。
  3. F1を押して、C/C++: Build and Debug Active File -> gcc build and debug active fileを実行してコンパイル。
  4. VS Codeの画面下部にターミナルWindowが表示され、実行結果が表示される。

VS_Code_C_Extension_Build.png

これにより、.vscodeディレクトリにtasks.jsonが作成される。

Debugger設定

  1. 上記のBuild後に、VS Codeの画面左に表示されているDebugウィンドウ上部の歯車アイコンをクリック。
  2. C++(GDB/LLDB) -> gcc build and debug active fileを選択。
  3. launch.jsonが開く。miDebuggerPathにデバッガのフルパス(Linuxの場合、/usr/bin/gdb等を)を入力して、保存。

これにより、.vscodeディレクトリにlaunch.jsonが作成される。

プログラムのビルド & デバッグ

設定が一通り終わり、ソースの記述が終わったら、コンパイルはShift + Ctrl + B -> C/C++: gcc build active fileで実行。
デバッグはF5で可能。

これで最低限のことはできる。

参考リンク

Get Started with C++ and Mingw-w64 in Visual Studio Code

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
66
Help us understand the problem. What are the problem?