运行 在 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:
和 diag
,if --
在调用外部程序时先于 - 参见 GitHub issue #17399.
作为解决方法,引用 参数:
cmake --build Debug --verbose -- '-v:diag'
我有一个生成 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:
和 diag
,if --
在调用外部程序时先于 - 参见 GitHub issue #17399.
作为解决方法,引用 参数:
cmake --build Debug --verbose -- '-v:diag'