2010-04-21 23 views
1

Dans msbuild/xbuild, j'aimerais avoir une propriété "libPath" qui peut être surchargée sur la ligne de commande en utilisant /p:libpath="/path/to/all/libs". Mais quand cette propriété est indéfinie, je veux appeler pkg-config --retrieve-Path somePackage pour obtenir le chemin du système actuel.Comment définir une propriété à la sortie d'une commande dans msbuild/xbuild

Je pensais comme here J'ai besoin de la sortie d'une commande pour être stockée dans une propriété.
La commande renvoie toujours une ligne de sortie.

Je tryied quelque chose comme

<PropertyGroup> 
    <LibPath /> 
</PropertyGroup> 

<Task ....> 
    <Exec Command="pkg-config --retrieve-Path somePackage" 
     Condition="$(LibPath)' == ''"> 
    <OutputTaskParameter="output" 
      PropertyName="LibPath" /> 
    </Exec> 
</Task> 

Mais cela ne fonctionne pas.

+0

Cela peut être fait avec .Net 4.5. Voir aussi https://stackoverflow.com/questions/8938679/how-get-exec-task-output-with-msbuild. –

Répondre

1

Vous ne pouvez pas faire cela en utilisant exec car la tâche Exec ne peut pas rassembler la sortie de l'outil ou de la commande qu'il exécute.

Vous devrez écrire une tâche msbuild personnalisée qui appelle pkg-config et rassembler cette sortie dans une propriété.

+0

C'est ce que je craignais. Merci – Nils

0

J'ai eu quelques idées sur la façon d'y parvenir.
J'ai créé une tâche personnalisée xbuild/msbuild pour simplement exécuter une commande donnée et rendre la sortie utilisable.
Les résultats peuvent être consultés here.