在msbuild/xbuild中,我希望有一个“libpath”属性,可以在命令行上使用 /p:libpath="/path/to/all/libs" . 但是当这个属性未定义时,我想调用 pkg-config --retrieve-Path somePackage 获取当前系统路径。
/p:libpath="/path/to/all/libs"
pkg-config --retrieve-Path somePackage
我想就像 here 我需要将命令的输出存储在属性中。 该命令总是返回一行输出。
我尝试过
<PropertyGroup> <LibPath /> </PropertyGroup> <Task ....> <Exec Command="pkg-config --retrieve-Path somePackage" Condition="$(LibPath)' == ''"> <OutputTaskParameter="output" PropertyName="LibPath" /> </Exec> </Task>
但那不起作用。
使用exec不能这样做,因为exec任务无法从其运行的工具或命令收集输出。
您必须编写一个自定义的msbuild任务,该任务调用pkg config并在属性中收集此输出。
我对如何做到这一点有一些想法。 我创建了一个xbuild/msbuild自定义任务来简单地执行一个给定的命令并使输出可用。 可以查看结果 here .