質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

22283閲覧

VSCodeから直接コンパイルしたい

opyon

総合スコア1009

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/10/16 11:33

編集2018/10/16 14:02

#解決!
回答頂いたコード3つの作成と、コードに合わせたファイル配置にすると正常動作確認出来ました。
原因はサブフォルダ配下にファイルがあったので想定通りの動作をしていなかったということだと思います。
イメージ説明

#追記3
少しエラーが減りました。解決では無かったです^^;
イメージ説明

#追記2
コメントからの修正後の結果も変わらずでした。
イメージ説明

#追記1
@lunateaさんの回答にあるコードをそのまま作ってみてタスクの実行してもコンパイル出来ませんでした。
何が問題なのでしょうか?
イメージ説明

一部文字色がグレーになっているのは何か関係がありますか?
イメージ説明

MinGWにgdcがインストールされてるかは知りませんので、

miDebuggerPathのパスは仮です。

確認したところ、c:\MinGW\gdb.exeはありました。
イメージ説明

※VSCodeのタグが無いのでCとVisualStudioにしています。(修正済)

###知りたいこと
今日勉強を始めようとしてインストールしたばかりなのですが、VSCodeから直接コンパイルしようと試したところエラーが出てしまいます。
解決策やヒントなどご教示頂けると助かります。

###現状までの経緯と出ているエラー
VSCode+MinGWでC/C++のプログラミング環境

tasks.json

{ // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "command": "gcc", "isShellCommand": true, "args": ["${fileBasename}", "-o", "${fileBasenameNoExtension}"], "showOutput": "always" }

VSCodeから直接コンパイル出来るらしいとのことで調べて試してみました。

タスクの構成が終わったところで、改めてhello.cをアクティブにして、[Ctrl]+[Shift]+[B]を押すと、出力ウィンドウには何も出ませんが、「hello.exe」が出力されます。

ここまでの設定などしてコンパイルを試すと次の画像のようにエラーとなりコンパイルされませんでした。

イメージ説明

###試したこと
1.コマンドプロンプトでファイルのあるフォルダにカレントディレクトリを移動してgcc hello.c -o hello.exeを実行すると正常にコンパイル出来ました。
イメージ説明

2.環境変数にpathを通してもコンパイル出来ませんでした。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/16 12:44

VSCodeのタグは`Visual Studio Code`です。
opyon

2018/10/16 12:46

ありがとうございます。修正しました。回答も拝見させていただきます。
guest

回答2

0

ベストアンサー

既に自己解決済みですが…。

Code Runnerは使い捨てのソースコードをコンパイルして実行するならばお手軽ですが、エラー行の捕捉をしたり複数のソースコードやライブラリからなるプログラムのコンパイルには不向きです。

json

1// task.json 2{ 3 "version": "2.0.0", 4 "tasks": [ 5 { 6 "type": "process", 7 "label": "Debug Build", 8 "command": "gcc", 9 "args": [ 10 "-g", 11 "-O0", 12 "${fileBasename}", 13 "-o${fileBasenameNoExtension}.exe" 14 ], 15 "group": { 16 "kind": "build", 17 "isDefault": true 18 }, 19 "problemMatcher": "$gcc" 20 } 21 ] 22}

ヘッダーファイルの場所を特定し、
定義を移動や定義をここに表示等の機能に必要な設定です。

json

1// c_cpp_properties.json 2{ 3 "configurations": [ 4 { 5 "name": "Win32", 6 "includePath": [ 7 "${workspaceFolder}" 8 ], 9 "defines": [ 10 "_DEBUG", 11 "UNICODE" 12 ], 13 "compilerPath": "c:/mingw/bin/gcc.exe", 14 "cStandard": "c11", 15 "cppStandard": "c++17", 16 "intelliSenseMode": "gcc-x64", 17 "browse": { 18 "path": [ 19 "${workspaceFolder}" 20 ], 21 "limitSymbolsToIncludedHeaders": true 22 } 23 } 24 ], 25 "version": 4 26}

デバッガを使用する場合。
MinGWにgdcがインストールされてるかは知りませんので、
miDebuggerPathのパスは仮です。

launch.jsonのpreLaunchTaskをtask.jsonのlabelと同じにすると
デバッグ時に指定したlabelの処理(Debug Build)を行うようになります。

// launch.json { "version": "0.2.0", "configurations": [ { "name": "C/C++: (gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "c:/mingw/bin/gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Debug Build" } ] }

追記

フォルダ構成はこうですね

フォルダ
ワークスペース

> Executing task: C:\MinGW\bin\gcc.exe -g -O0 hello.c hello.exe                               ↑ココ

あと-o${fileBasenameNoExtension}.exeはくっつけて-o${fileBasenameNoExtension}.exe
-oが抜けて-o${fileBasenameNoExtension}.exeだけになってますね。

投稿2018/10/16 12:43

編集2018/10/16 14:05
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

opyon

2018/10/16 13:13

回答ありがとうございます。 早速回答のコードを3つそのまま作ってコンパイルしてみましたがエラーとなってコンパイル出来ませんでした。 今日インストールしたばかりで右も左も分からず迷走しております。 何かお気づきの点などありましたらご教示頂けると助かります。
退会済みユーザー

退会済みユーザー

2018/10/16 13:35

"args": ["${fileBasename}", "-o", "${fileBasenameNoExtension}"], の"-o"と"${fileBasenameNoExtension}"を別々に分けないで繋げるのと、 ${fileBasenameNoExtension}だと、実行ファイルに拡張子つかないんじゃないかなと なので、${fileBasenameNoExtension}.exe あと、元記事がhttp://www.mingw.org/のを勧めてるけど、 個人的にはmsys2をインストールしてpacmanからgccとgdbをインストールするやり方のほうが良いかも
opyon

2018/10/16 13:42

gccとgdbは入ってること確認出来てるのと、コマンドプロンプトからコンパイル出来るのですが、入れ直したほうがいいということでしょうか?
退会済みユーザー

退会済みユーザー

2018/10/16 13:44 編集

フォルダ構成こうなってます? WORKVS ├.vscode │├c_cpp_properties.json │├launch.json │└tasks.json └memo  └test.c だとすると、 WORKVS ├.vscode │├c_cpp_properties.json │├launch.json │└tasks.json └test.c の様にmemoフォルダからworkvsフォルダに移すか、 memoフォルダを指定するように各jsonファイルを書き換えないとダメかも。
opyon

2018/10/16 13:46 編集

逆でした下の構成にして試してみます。
opyon

2018/10/16 13:49

>${fileBasenameNoExtension}.exe に書き換えてファイルを移動しても結果変わらずでした。
退会済みユーザー

退会済みユーザー

2018/10/16 13:52

No such file or directoryなので、gcc.exeは実行できてるけどソースコードの場所が間違ってるって事なんですけどね。
opyon

2018/10/16 13:53

ごめんなさい。いけました。ファイルの配置場所が違っていました。 最終画像貼ります。
opyon

2018/10/16 13:57

ごめんなさい。勘違いでした。エラーが減っただけでした。 あと少しでいけそうです。
opyon

2018/10/16 13:59

今度こそいけました! taskをもとに戻したらいけました。 "${fileBasename}", "-o${fileBasenameNoExtension}.exe"
opyon

2018/10/16 14:05

お手数おかけしました。 おかげさまで解決できました。 ありがとうございました。
opyon

2018/10/16 14:06

追伸: HelloWorldをコンパイルするのに丸半日以上掛かりました^^; C言語大変そう・・・
guest

0

Code Runner

別の方法になりましたが、こちらをインストールしてコンパイルと実行が同時に可能になりました。

投稿2018/10/16 11:58

opyon

総合スコア1009

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問