Visual Studio Codeを使ってC++でHello World
C++でhello worldする記事はたくさんあるんですが、VSCodeをあまり使い慣れておらず手間取ったのでまとめてみます。
今回はVSCodeはインストール済みという前提で説明させていただきます。 また、ここでは挙動についての詳細な説明はせず、VSCodeでHellow Worldすることのみにフォーカスします。
対象読者は以下の人を想定しています。
下準備
まずVSCodeを使ってC++で開発しやすいように拡張機能をインストールしましょう。
まず⌘+shift+x
を押してみてください。以下のようなサイドメニューが表示されると思います。これは拡張機能ビューと呼ばれるもので拡張機能をインストールできる画面になります。
この画面にある検索フィールドにcpptools
と入力しインストールした後にVSCodeをReloadしてください。
この拡張機能をインストールすることで自動補完や定義元へのジャンプなどが可能になるようです。
ファイル作成
次にhelloworld.cpp
というファイルを作成した後、以下のように記述します。
#include <iostream> int main() { std::cout << "Hello C++ World" << std::endl; return 0; }
こいつをコンパイルして実行するとHello C++ World
と表示されるはずです。
ではVSCodeでビルドしてきましょう
VSCodeでビルド
ファイルのコンパイルはターミナルでもできます。
その際には
g++ ~/helloworld.cpp -o helloworld.out
みたいな感じでコンパイルできます。
まあVSCodeのショートカットキーでビルド可能なのでビルドはVSCodeに任せてしまいましょう。
VSCodeからビルドを行うためにまず、tasks.json
ファイルを作成する必要があります。以下の手順に従ってファイルを作成してください。
⌘+shift+P
でコマンドパレットを開くTasks: Configure Tasks
を入力してEnterCreate tasks.json file from templates
を選択- 最後にOthers を選択
以上の手順が完了すると以下のようなtasks.jsonファイルが出現します。
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "echo", "type": "shell", "command": "echo Hello" } ] }
このファイルを次のように書き換えてみて下さい
{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g++", "args": [ "-g", "-o", "${fileDirname}/${fileBasenameNoExtension}.out", "${file}", ], "group": { "kind": "build", "isDefault": true, } }, ] }
重要だと思う部分だけ説明をします
command
実行するコマンドを指定します。ここではg++
コマンドでコンパイルするという指定をしています。
args
実行するコマンドに渡す引数を指定しています。
"-g", "-o", "${fileDirname}/${fileBasenameNoExtension}", "${file}"
と記述しており、ぱっと見た感じややこしく思うかもしれません。一つづつ説明していきます。また、関連した知識を広げるには以下のサイトが参考になるかもしれません。
-g
コンパイルの際にdebugのための情報を持ったファイルを生成します。この指定がなくてもビルドはできますが、後々プログラムを書くことを考えたら追加しておいたほうがいいでしょう。
-o
コンパイル後のファイルの名前をこちらで指定するためのオプションです。
${fileDirname}/${fileBasenameNoExtension}
コンパイル後のファイル名です。こちらはVSCodeの変数を利用していて、${コンパイル対象のファイルがあるディレクトリ}/${コンパイル対象のファイルの拡張子を取り除いたファイル名}
という意味になります。
例えば、hoge/fuga.cpp
をコンパイルしたらhoge/fuga
にしますよーという指定です。
${file}
現在開いているファイル名を表す変数です。コンパイル対象のファイルがここに入るイメージです。
つまり、"-g", "-o", "${fileDirname}/${fileBasenameNoExtension}", "${file}",
という指定は、現在開いているファイルをコンパイルして同じディレクトリに拡張子を取り除いたファイル名で配置しますよー。あ、デバッグのためのファイルもつけておきます。という感じでしょうか。
group
こちらはこのタスクをbuildのタスクとしますよーという意味です。
⌘+shift+B
でビルドのタスクを走らせることができるのですが、その時にこのファイルのタスクを実行します。ということです。
このtasks.json
を保存し、先程のhelloworld.cpp
を開いて⌘+shift+B
を実行すると同階層にhelloworld.out
というファイルができると思います。そいつがコンパイルされたファイルになります。
実行する
後はこのファイルを実行して終了です。
コンパイルはVSCodeのコマンドで行なったのですが、ファイルの実行はターミナルから行いたいと思います。
これは正直個人の趣味です。先程のtasks.json
にファイルを実行するところまで書いてしまってもいいですが、まあデバッグのためだけにビルドしたい時もあるだろうし、いちいち実行しなくてもいいか。という感じです。
そのうち気が変わるかもしれませんが。
VSCodeでターミナルを開くにはctrl+`
で開けます
そこに./helloworld.out
と打ち込めばめでたくHello C++ World
と表示され、終了となります。