运行 在 powershell 中通过 cmake 进行 msbuild

Running msbuild via cmake inside powershell

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

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

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:diagif --在调用外部程序时先于 - 参见 GitHub issue #17399.

作为解决方法,引用 参数:

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