我有一个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中存在:
-参见GitHub issue #17399。作为变通方法,引用参数:-v:diag
意外地作为两个参数传递,-v:
和diag
,如果--
在调用外部程序时先于,则cmake --build Debug --verbose -- '-v:diag'