VScodeでC/C++の環境構築したら思わぬところでハマった話です
MacにVScodeでC/C++書く環境構築する
まずどういう環境構築しようとしたかというお話
わかりやすかったのでこの記事を参考に環境構築しました
Visual studio codeで競プロ環境構築[mac OS]
流れとしては
・Macにgccインストール
・(VScodeにC/C++の拡張機能,code runnerを入れる)
・code runnerの設定をしてあげる
といった感じです
ここまではすんなりOK
何にハマった?
いろいろやり始めて自作の関数作って複数ファイルにコードを分割したとき起こりました
run codeするとlinker command failed with exit code 1と言われてうまく実行されない。
どうやらmainではない別ファイル.cが呼び出されてないことが原因っぽい
ここからtasks.jsonだ-launch.jsonだーとかいろいろいじくり回したんだけどどーもうまくいかない。
それもそのはず。
run codeはcode runnerの内部処理でコンパイルされているからでした
どうやって解消した?
実を言うと最初の参考URLにほぼ答えが載ってたんですが気づかなかったー
いろいろ探してこのページを見て答えにたどり着きました
Visual Studio Code Mac 開発環境構築[C++]
code runnerのconfigurationにもしっかり書いてあるのですが
code runnerではrun codeしたときの動作が言語ごとにしっかり決まっちゃってるんですね。
cの場合これが実行されちゃう
cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
目的のディレクトリに移動→runcodeしたファイルをコンパイルしてそのファイル名の実行ファイルを生成→プログラム実行
と言う流れです。
コンパイルするところを複数ファイルコンパイルしてくれるように書き換えねば!というわけです
■code runnerのページの上部,歯車マークを押してExtension settingsを選ぶ
■code-runner: Executor MapのEdit in settings.jsonを選ぶ
■目的フォルダ内の全部の.c,.cppプログラムを実行してくれるように書き換える
元々 g++ $fileName となっていたものを g++ *.cppと書き換えて目的フォルダ内の全ての.cpp(もしくはc)のファイルをコンパイルしてくれるようにしちゃいます
これでOK
おわりに
おかげさまでcode runnerいれない場合のコンパイルの設定方法にも詳しくなってしまいましたとさ
おしまい