2017-07-22 1 views
0
  • Windows-Version: Microsoft Windows [Version 10.0.14393]
  • MSBuild Version: Microsoft (R)-Buildmodul, Version 15.1.1012.6693
  • Das Projekt wird in C geschrieben.

In den *.vcxproj Dateien dieses Projektes gibt es eine Menge Code in wie dieseMSBuild Shorten Configuration Managment In vcxproj-Files

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> 
    [do some stuff] 
</ImportGroup> 

für alle Konfigurationen, 'Debug|Win32', 'Release|Win32', 'Debug|x64', 'Release|x64'. Aber ich werde die gleiche Konfiguration für alle Kombinationen haben, deshalb möchte ich nicht 4 mal schreiben, was meine Projektdatei 3 mal länger und weniger lesbar macht.

Gibt es eine Verknüpfung wie Condition="'$(Configuration)|$(Platform)'=='Any Configuration|Any Architecture'?

Antwort

1

Die Standardmethode hierfür wäre "property sheets"; Konkreter: ein Eigenschaftsblatt mit den allgemeinen Optionen, das von allen Plattform/Konfigurations-Kombinationen importiert wird. Einige Gründe, diesen Ansatz zu wählen:

  • es genau adressiert Ihr „Ich werde die gleiche Konfiguration für alle Kombinationen haben, deshalb will ich nicht es 4 mal schreiben, meine Projektdatei 3-mal länger zu machen und weniger lesbar“ Anforderung und mehr: es behält die allgemeinen Optionen in einer einzigen Datei bei, die auch von anderen Projekten übernommen werden kann (was wirklich das Verkaufsargument Nr. 1 ist, wenn Sie mehrere Projekte haben und dieselben Optionen für sie haben möchten)
  • es hat Benutzer Interface-Unterstützung für die Bearbeitung (obwohl es kein Problem ist, wenn Sie die vcxproj manuell bearbeiten möchten, um es hinzuzufügen)
  • hält es die Standard-Projektstruktur intakt, so dass immer noch per-Config änderung und pro Plattform Änderungen benötigen Sie diese
  • Eigenschaftenblätter sind nur Msbuild-Dateien wie jeder andere und als solche können andere Dateien importieren, so dass Sie Hierarchien mit ihnen erstellen können, Dinge wie eine Master-Datei, die auf Anwendungstyp (exe/dll) setzt verschiedene Ausgangspfade und so weiter
1

Sie können das Attribut Condition entfernen und die ImportGroup für jede Konfiguration anwenden.

+0

So habe ich es gestern versucht und es scheint zu funktionieren. Obwohl ich denke, @stijn Antwort ist die "professionellere" Art, es zu tun, und das ist, warum seine Antwort angenommen; aber ich habe dich trotzdem gewählt;) – user69453

+0

Danke! Stijns Antwort ist sehr ausführlich. Ich hätte das auch als Antwort markiert! ;) Gute Arbeit @stijn! –