VS code code runnerで実行ができません。
settings.jsonでは"&&"と書かれているところが"; if ($?)"に変換されているようです。
なぜこうなるのでしょうか。
解決策はあるでしょうか。
ちなみに、手打ちでコマンドプロンプトに
cmd
1gcc -fexec-charset=CP932 -o hello hello.c && hello
と打つとコンパイル、実行までしてくれます。
上記のように入力されるにはどのようにすればよいでしょうか。
コマンドプロンプトでの結果
cmd
1H:\pgm_code\gcc>cd "h:\pgm_code\gcc\" ; if ($?) { gcc -fexec-charset=CP932 hello.c -o hello } ; if ($?) { "h:\pgm_code\gcc\" hello } 2ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
setting.json上でのコード
json
1"c": "cd $dir && gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $dir $fileNameWithoutExt"
ソースファイルはカレントディレクトリ直下にあるので、
json
1"c": "gcc -fexec-charset=CP932 $fileName -o $fileNameWithoutExt && $fileNameWithoutExt"
このように書くと
cmd
1H:\pgm_code\gcc>gcc -fexec-charset=CP932 hello.c -o hello ; if ($?) { hello } 2gcc: error: ;: No such file or directory 3gcc: error: if: No such file or directory 4gcc: error: ($?): Invalid argument 5gcc: error: {: No such file or directory 6gcc: error: hello: No such file or directory 7gcc: error: }: No such file or directory
というようなエラーが表示されます。
やはり、&&が変換されていることが問題だと思われます。
実行時のターミナルがコマンドプロンプト(cmd)ではなく、PowerShellで実行することが前提なのでは。
if ($?) { } は、直前のコマンド実行が成功(True)であれば{}内を実行するというPowerShellで使える構文です。
回答していただき、ありがとうございます。
PowerShellで使える構文なのですか。勉強になりました。
できれば、PowerShellではなく、コマンドプロンプトで実行したいと思っています。
コマンドプロンプトで実行するようにする方法はありますでしょうか。
追記
実際にPowerShellで実行したところ、少し変更はありましたが、実行することができました。
ですが、コマンドプロンプトで実行する方法を知りたいです。
settings.jsonの内容がPowerShellようになっているということなのでしょうか。
"既定のターミナルのプロファイルを選択する"の中で、PowerShellだけが検出済みとなっていることが関係しているのでしょうか。
この settings.json は、現在 VScode で開いているフォルダー (ワークスペース) のものでしょうか? それともユーサーのものでしょうか?
いろいろと条件があるようですが、ユーザー側の settings.json に記述されているとこのようになることがあるようです。ワークスペース側だとこのような変換は行われないようです。
回答していただき、ありがとうございます。
貼っていただいたURLを参考にsettigns.jsonを書き換えたところ、"&&"の問題が解決しコマンドプロンプトで実行することができました。
ありがとうございます。
しかし、
This is deprecated, use `#terminal.integrated.defaultProfile.windows#` instead
と注意を促されます。
これは`#terminal.integrated.defaultProfile.windows#` を使用するのを推奨していないということでしょうか。
また、VS codeを開くたびに
「ターミナル プロセスが起動に失敗しました: シェル実行可能ファイル "C:\WNDOWS\system32\cmd.exe" へのパスが存在しません。」
と表示されます。無視して実行すればプログラムは動作しますが。
貼っていただいたサイトのほうではこのことについて触れていませんでしたが、code runner側が対応するまで放置でも大丈夫なのでしょうか。
とりあえず、私の問題は解決いたしました。
回答して頂いた皆様、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー