Having trouble compiling in VS Code terminal, which is Windows Powershell

拈花ヽ惹草 提交于 2019-12-31 01:52:07

问题


When I right click Run code, and have run in terminal on in my user settings I get these errors.

At line:1 char:63
+ ... "c:\Users\Josh\Documents\Programming\Learning to Program\" && g++ Exe ...
+                                                                ~~
The token '&&' is not a valid statement separator in this version.
At line:1 char:99
+ ... \Learning to Program\" && g++ Exercise36.cpp -o Exercise36 && "c:\Use ...
+                                                                ~~
The token '&&' is not a valid statement separator in this version.
At line:1 char:102
+ ... ercise36 && "c:\Users\Josh\Documents\Programming\Learning to Program\ ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expressions are only allowed as the first element of a pipeline.
At line:1 char:160
+ ...  "c:\Users\Josh\Documents\Programming\Learning to Program\"Exercise36
+                                                                ~~~~~~~~~~
Unexpected token 'Exercise36' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

I have been compiling fine up until today, and I did some googling and started typing my own commands into the terminal instead of just running code.

I started replacing the && with -and and get a different problem. This is what the command looks like now.

"c:\Users\Josh\Documents\Programming\Learning to Program\" -and g++ Exercise36.cpp -o Exercise36 -and "c:\Users\Josh\Documents\Programming\Learning to Program\"Exercise36

This is the error I get.

Set-Location : Parameter cannot be processed because the parameter name 'o' is ambiguous. Possible matches include: -OutVariable -OutBuffer.
At line:1 char:87
+ ... \Programming\Learning to Program\" -and g++ Exercise36.cpp -o Exercis ...
+                                                                ~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Location], ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.SetLocationCommand

I am using the GNU open source compiler, this is the first issue I have had with compiling since I realized you have to save before you compile. I am running a simple string that changes all the characters to X from a string that is read from terminal from C++ Primer program. Any help would be appreciated.


回答1:


I had the same problem, I believe it is caused by the new VS code version 1.35. I tried downgrading to 1.34 and compiling and running c++ worked again.

The old version seems to run the code with a different command:

"cd $dir ; if ($?) { g++ $fileName -o $fileNameWithoutExt } ; if ($?) { .\\$fileNameWithoutExt}"

in your case it would look like:

cd "c:\Users\Josh\Documents\Programming\Learning to Program\" ; if ($?) { g++ Exercise36.cpp -o Exercise36 } ; if ($?) { .\Exercise36}

For me using this comand compiling and running works in the new VS version aswell.




回答2:


Only a guess what you might need:

# change to the directory, where your source code resides
Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\" 

# Invoke compiler via the call operator = &
& g++ Exercise36.cpp -o Exercise36 

# change to the directory, where your binary resides
Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\Exercise36"

You can execute these three commands if you divide them with a ;:

   Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\"; & g++ Exercise36.cpp -o Exercise36; Set-Location "c:\Users\Josh\Documents\Programming\Learning to Program\Exercise36"

If you want to check the outcome of a command you can use the $? variable.




回答3:


Following the steps from this article, I came across this issue when tried to run the following command inside the terminal on VS code version 1.39.2

npm run build && npm run start-sw

Error:

At line:1 char:15
+ npm run build && npm run start-sw
+               ~~
The token '&&' is not a valid statement separator in this version.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : InvalidEndOfLine

resolution was to run the same command in the Node JS command window;

Adding this here since it was the top post for this error on stackOverflow and may help someone in the future




回答4:


I had the same problem

PS:

C:\typescript_practice> tsc testclass.ts && node testclass.js

At line:1 char:18 tsc testclass.ts && node testclass.js ~~ The token '&&' is not a valid statement separator in this version. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : InvalidEndOfLine

PS C:\typescript_practice> tsc testclass.ts | node testclass.js Sangamesh Vastrad

worked with below

use |" instead of && in latest for node



来源:https://stackoverflow.com/questions/56488308/having-trouble-compiling-in-vs-code-terminal-which-is-windows-powershell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!