Powershell未正确地将参数传递给cmake

Powershell未正确地将参数传递给cmake,powershell,Powershell,我正在尝试使用Powershell作为Windows 10中的主shell。大多数情况下,它工作得很好,但有些事情导致我返回到旧的命令提示符,我希望它们不会 我正在尝试使用cmake创建Visual Studio解决方案。以下是在命令提示符下正常工作的命令行(为了清晰起见,请将其分成几行) 当我从Powershell运行相同的命令时,cmake抱怨我没有指定BOOST\u ROOT 我试着使用&cmake…,我试着在所有-D的周围加上引号(如前所述)-没有任何效果。我只是不能让Powershel

我正在尝试使用Powershell作为Windows 10中的主shell。大多数情况下,它工作得很好,但有些事情导致我返回到旧的命令提示符,我希望它们不会

我正在尝试使用cmake创建Visual Studio解决方案。以下是在命令提示符下正常工作的命令行(为了清晰起见,请将其分成几行)

当我从Powershell运行相同的命令时,cmake抱怨我没有指定BOOST\u ROOT

我试着使用
&cmake…
,我试着在所有-D的周围加上引号(如前所述)-没有任何效果。我只是不能让Powershell像在cmake上一样通过命令行


有没有办法告诉Powershell将“cmake”后面的文本直接传递给cmake而无需进一步处理?请注意,我不能在所有参数周围加引号,因为它们中已经有引号(-G…)。如果我在所有内容周围都加上单引号-它仍然不起作用。

要在PowerShell中启动外部程序,最好使用
启动进程
及其
-ArgumentList
参数:

Start-Process cmake -ArgumentList "-G ""Visual Studio 14 2015"" -A x64 -DBOOST_ROOT=d:\boost\1_59_0 -DBOOST_LIBRARYDIR=d:\boost\1_59_0\lib64" -NoNewWindow
有关此Cmdlet的详细信息,请访问或在PowerShell中使用以下命令:

Get-Help Start-Process -ShowWindow

这是你对问题的全部指挥权吗?我试过用你的命令代替cmake来代替一个名为echoargs的程序,它只打印回它得到的参数。powershell似乎正确地传递了所有参数。是否尝试了转义参数
-->%
?(对于PS V3)@DanL,是的,这是我的全部命令。在命令提示符下工作,在Powershell中失败。您可以尝试使用此
启动进程cmake-ArgumentList“-G”“Visual Studio 14 2015”-A x64-DBOOST\u ROOT=d:\boost\1\u 59\u 0-DBOOST\u LIBRARYDIR=d:\boost\1\u 59\u 0\lib64”
我必须添加-nonewindow标志,但是的,它可以工作。等我完成后按回车键…太好了!现在我需要把它变成一个方便的函数,这样我就不用再键入-nonewindow,-Wait,-ArgumentList和引号了。@zmbq您是如何指示
cmake
使用父文件夹(
cmake..
来自您的问题)的
Start Process
方法的?
Get-Help Start-Process -ShowWindow