würde ich zunächst feststellen, welche Anforderungen aus der Bibliothek benötigt werden:
- Debug/Release
- Unicode-Unterstützung
- Und so weiter ..
Damit bestimmt man kann dann Erstellen Sie Konfigurationen für jede Kombination, die Sie selbst oder andere Bibliotheksbenutzer benötigen.
Beim Kompilieren und Verknüpfen ist es sehr wichtig, dass Sie Bibliotheken und ausführbare Datei konsistent in Bezug auf Konfigurationen halten, d. H. Nicht mischen Release & debug bei der Verknüpfung. Ich weiß auf der Windows/VS-Plattform kann dies subtile Speicherprobleme verursachen, wenn Debug-& Release-Bibliotheken innerhalb einer ausführbaren Datei gemischt sind.
Wie Brian gegenüber Visual Studio erwähnt hat, empfiehlt es sich, den Konfigurationsmanager zu verwenden, um festzulegen, wie die einzelnen Konfigurationen erstellt werden sollen.
Zum Beispiel erfordern unsere Projekte die folgenden Konfigurationen abhängig von der ausführbaren Datei.
- Debug + Unicode
- Debug + ASCII
- Mitteilung + Unicode
- Veröffentlichung + ASCII
Die Nutzer dieses Projekt den Configuration Manager verwenden, um ihre ausführbaren Anforderungen mit dem übereinstimmen Projekt verfügbare Konfigurationen.
In Bezug auf die Verwendung von Makros werden sie ausführlich bei der Implementierung von Kompilierungszeitentscheidungen für Anforderungen verwendet, z. B. wenn die Debug- oder Release-Version einer Funktion verknüpft werden soll. Wenn Sie VS verwenden, können Sie das Attribut für die Präprozessor-Definitionen anzeigen, um zu sehen, wie die verschiedenen Makros definiert sind, z. _DEBUG _RELEASE, so steuert die Konfiguration, was kompiliert wird.
Welche Plattform verwenden Sie, um Ihre Projekte zu kompilieren/verlinken?
BEARBEITEN: Erweitern auf Ihren aktualisierten Kommentar ..
Wenn die Configuration Manager Option nicht verfügbar ist, dann empfehle ich die folgenden Eigenschaften aus dem Projekt mit:
- Linkers ->Zusätzliche Bibliotheksverzeichnisse oder Linkers ->Eingabe
Verwenden Sie das Makro $(ConfigurationName)
, um mit der geeigneten Bibliothekskonfiguration, z.B. Debuggen/Freigeben.
$(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.lib
- Buildereignisse oder benutzerdefinierten Schritt Konfigurationseigenschaft
eine Kopie der Datei erforderlich Bibliothek Ausführen (n) aus dem abhängigen Projekt vor (oder nach) zu der Build vorkommend.
xcopy $(ProjectDir)\..\third-party-prj\$(ConfigurationName)\third-party.dll $(IntDir)
Das Makro $(ProjectDir)
wird für das aktuelle Projekt Standort ersetzt werden und bewirkt, dass der Betrieb in das aktuelle Projekt relativ kommen. Das Makro $(ConfigurationName)
wird durch die aktuell ausgewählte Konfiguration ersetzt (Standard ist Debug
oder Release
), wodurch die richtigen Elemente kopiert werden können, je nachdem, welche Konfiguration gerade erstellt wird.
Wenn Sie eine reguläre Namenskonvention für Ihre Projektkonfigurationen verwenden, wird es helfen, wie Sie das $(ConfigurationName)
Makro verwenden können, andernfalls können Sie einfach eine feste Zeichenfolge verwenden.