Visual Studio Code C言語開発環境の設定 (Linux/gcc)
この記事の目的
Visual studio codeを用いてLinux上でgccを用いたC言語開発をする時の設定方法について記述する。
1. 必要なツールのインストール
下記コマンドでgcc(build-essentialはコンパイラ・ライブラリ・makeツール)、gdb(デバッグ用ツール)をインストールする
sudo apt install build-essential sudo apt install gdb
Visual studio codeには下記拡張機能をインストールする。
- c/c++ extention pack (C開発環境、関連ツール一式) marketplace.visualstudio.com
2. make環境の構築(makffile)
VS codeにはC言語プロジェクト用にビルド設定する機能があるが、本機能で環境構築するとプロジェクトのビルドがターミナルから実行できない。 よって、GNU makefileでビルド環境を構築し、VS codeでは拡張機能makefiletoolでそれを読み込んで実行できるようにする。
makefileの設定は下記サイト等を参考に行う。
本記事では例として、下記の2つのcファイルと1つのヘッダファイルについてmakefileの設定を記述する。
main.c
#include <stdlib.h> #include <stdio.h> #include "func.h" int main(void) { int indx =0; for (indx=0; indx<5000; indx++) { fprintf(stderr,"count: %d\n",func(indx)); } return 0; }
func.c
#include <stdlib.h> #include <stdio.h> int func(int cnt) { return cnt*2; }
include/func.h
#ifndef FUNC_H #define FUNC_H int func(int cnt); #endif //FUNC_H
#生成する実行ファイル名 TARGET = testPrj #.oファイル生成用の中間フォルダ OBJSDIR = ./Objs #ヘッダインクルードフォルダ MYINCDIR = ./include #コンパイル対象とするCファイル OBJS = main.o \ func.o\ #コンパイル用コマンド (c++ならばg++に変更) CC = gcc #Wall:警告をすべて出力、-g:デバッグ情報出力、GNU_SOURCE:非標準拡張機能の有効化 CFLAGS = -Wall -g -std=c99 -D_GNU_SOURCE #lm:算術計算ライブラリ有効化 LDFLAGS = -lm INCDIR = -I$(MYINCDIR) OBJS_ALL = $(addprefix $(OBJSDIR)/, $(OBJS)) all: mkdir -p $(OBJSDIR) make $(TARGET) $(OBJS): %.o: %.c $(CC) $(CFLAGS) -c $< $(INCDIR) -o $@ mv $@ $(OBJSDIR)/$@ $(TARGET): $(OBJS) $(CC) -o $@ $(OBJS_ALL) $(LDFLAGS) clean: rm -f *.o rm -f $(OBJSDIR)/*.o rm $(TARGET)
ターミナルで下記コマンドを実行すると、正しくビルド・実行できるかを確認できる。
make sudo ./testPrj
3. VS codeの makefiletools設定
上記を設定後、Visual studio codeからbuildができるようにmakefileとリンク設定する。 makefileの設定はVS codeの『ファイル』⇛『ユーザー設定』⇛『設定』で検索バーに"makefile"と入力すると出てくる画面で"makefile:Configurations"を選択する。ここで、設定に保存先として"ユーザー"ではなく"ワークスペース"に切り替えておいたほうが良い。 上記手順後に表示されるsettings.jsonのmakefile.configurationsで下記のように記述する。
"makefile.configurations": [ { "name": "testprj", "makeDirectory": "./prj" } ]
上記でnameはmake設定の識別名、makeDirecgtoryはmakefileの相対パス(VS codeのルート設定フォルダから)を記入する。 上記設定後、拡張機能mekefile toolsのbuilt対象をtesprjに変更して実行ボタンを押すとVS codeからプロジェクトのビルドが可能になる。
4. インクルードパスの設定
VS codeではソースコードを分析してエラー・警告を表示する機能があるがインクルードパスが適切に設定されていないと正しい探索が行われない。 インクルードパスの設定をするためにコマンドパレットから『C/C++構成の編集(JSON)』を選択し、"includePath"にヘッダファイルがあるフォルダを追加する。
"includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/prj/include" ],
4. デバッグ環境設定
コードの実行中の変数値の確認、ブレークポイントを用いたデバッグを実行するため、GDBの設定を行う。 VS code左側の拡張機能から『実行とデバッグ』を選択し、『launch.json』ファイルを作成しますボタンを押し、C++/GDB用のjsonを作成する。
作成された設定のプログラムのパスを変更する。
"configurations": [ { "name": "(gdb) 起動", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/prj/testPrj", 以下略 } ]
上記を設定後にgdbの起動メニューを実行すると、break pointを使ったデバッグ、変数値の確認がVS Code上からできるようになる。