目次
VSCodeでC言語開発をする
軽量で高機能なMicrosoft製のテキストエディタ、VSCodeを使ってC言語のソースコードを記述していくための設定とかを紹介。
環境
- Windows10 Home 64bit
- Visual Studio Code 1.25.1
- gcc(MinGW 6.3.0)
Visual Studio Code のインストール
日本語化まで上記にまとめたので参考にしてほしい。
拡張機能のインストール
今回はC言語を扱うのでC/C++の拡張機能をインストールする。
C/C++
で検索すれば一番上に出てくる「C/C++」をインストールでOK。これでコード補完やナビゲーションを行ってくれるようになった。
ヘッダーの設定
標準ライブラリ以外からインクルードすると、コード補完などが仕事をしなくなってしまう。そこで、ライブラリの場所を別途記述しておく必要がある。
[Ctrl]+[Shift]+[P]でコマンドを開き、「C/C++: Edit Configurations」をクリックすると、作業しているディレクトリに「.vscode」フォルダが作成され、その中に「c_cpp_properties.json」が作成される。このファイルを編集する。インクルードするものを増やしたい場合は"includePath"
の項目を編集して、
"includePath" : [ "${workspaceFolder}/**, "追加のインクルードライブラリの場所" ]
という記述を追加してあげると良い。
コンパイル
練習用に新しくディレクトリを作り、次のファイルを作成した。
#include <stdio.h> int main(){ int a; printf("Hello World!\n"); scanf("%d", a); return 0; }
ファイル名を「test.c」として保存した。
手動でコンパイル
VSCodeではターミナルを起動することができ、そこでコンパイルすることができる。
[Ctrl]+[@]を押すとターミナルが起動する。そこでいつもどおり
> gcc -o test test.c
などとやればコンパイルしてあげることができる。そのまま
> test
とやれば実行することも可能だ。
タスクに登録してコンパイル
[Ctrl] + [Shift] + [B]を押すとタスクが起動できる。
まだタスクを作っていないので、「実行するビルドタスクがありません。 ビルドタスクを構成する...」と表示されるはずだ。
これをクリックすると「テンプレートからtasks.jsonを生成」と言われるのでクリック。タスクテンプレートが表示されるので、今回はMinGWのgccを利用するため「Others」を選択する。すると「.vscode」フォルダ内に「tasks.json」が生成される。できたら、"tasks":[]
の中身を書き換えていこう。次のように書き換える。
"tasks": [ { "label": "gcc", "command": "gcc", "args": [ "${fileBasename}", "-o", "${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true } } ]
"label"
はタスクの名前なので実はお好みで良かったりする。それ以下で使用するコマンドとオプションを設定している。もしコンパイルするときに追加でライブラリを設定したりしたい場合は"args":[]
の中に更に引数を追加して-"-I<../includePath>"
などをつけておくと良いだろう。
これでタスクの設定が完了したので以後タスクを起動して「gcc」タスクを選択するだけでコンパイルを自動でやってくれるようになった。
mingw32-makeを使ってコンパイル
Linuxなどでよく使われている「make」コマンドだが、MinGWをインストールすると同じ機能のアプリケーションで「mingw32-make」というものを使うことができる。ここで「Makefile」を作成し、
test: test.o gcc -Wall -o test test.o test.o: test.c gcc -c test.c
保存する。次にタスクからmingw32-make
を起動できるように
"command": "mingw32-make", "args": [],
としてタスクを実行するとmakeコマンドでコンパイルすることができる。これで複数ファイルを扱いだしても問題なくコンパイルすることができそうだ。
まとめ
これでVSCodeを使ってC言語のコンパイルができるようになった。大きな開発ならIDEとか使ったほうがいろいろ便利だけどちょっとしたコードを走らせたいときは結構便利かもしれない。