在powershell中通过cmake运行msbuild



我有一个CMake项目,它生成一个使用MSBuild构建的Visual Studio解决方案。

我用来构建项目的命令是:

cmake --build Debug -- -v:diag

使用--选项会导致-v:diag选项被传递给MSBuild。

当从命令提示符运行时,一切正常。

但是,当在powershell提示符中运行时,它会中断:

PS C:proj> cmake --build Debug --verbose -- -v:diag
Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
MSBUILD : error MSB1016: Specify the verbosity level.
Switch: -v:
For switch syntax, type "MSBuild -help"

似乎powershell正在做一些事情来解析冒号:周围的参数。

如何使powershell将参数字符串按原样传递给cmake?

不幸的是,你在PowerShell的参数绑定器中遇到了一个错误,至少在PowerShell 7.2.4中存在:

-v:diag意外地作为两个参数传递,-v:diag,如果--在调用外部程序时先于,则

-参见GitHub issue #17399。作为变通方法,引用参数:

cmake --build Debug --verbose -- '-v:diag'

最新更新