2011-01-17 8 views
1

Es gibt viele Open-Source-Bibliotheken, die mit Visual Studio kompiliert werden können. Ich portiere ein Programm von Linux zu Windows, aber es hängt von einer Anzahl von Bibliotheken ab. Ich weiß nicht, welche Best Practices für Bibliotheken unter Windows gelten.Wie sollten Open Source-Bibliotheken unter Windows verwendet werden?

Unter Linux sind diese Bibliotheken normalerweise Teil der Distribution. Um zum Beispiel sqlite unter Debian zu verwenden, müssen Sie nur libsqlite3-dev installieren und die Include-Dateien und Bibliotheken (sowohl statische als auch dynamische) werden automatisch installiert und stehen Ihrem Programm zur Verfügung.

Wenn Sie eine andere Version als Ihre Distribution liefert benötigen, können Sie es in Ihrem Home-Verzeichnis kompilieren, installieren Sie sie auf ~/include und ~/lib, und stellen Sie den entsprechenden environment variables so dass der Compiler diese Verzeichnisse in seinen Suchpfad enthält.

Wie können Bibliotheken, die als Quelle unter Windows verteilt werden, am besten verwendet werden? Wenn ich dynamisch und nicht statisch verknüpfe, gibt es eine einfache Möglichkeit, die erforderlichen DLLs in das Ausgabeverzeichnis zu kopieren, um die Neuverteilung zu erleichtern (vorausgesetzt, die Lizenzanforderungen sind erfüllt)?

Antwort

1

Option 1 - Projekte, die Binärdistributionen für Windows/nicht in DevStudio bauen.

z. OpenSSL.

Projekte wie OpenSSL werden am besten in ihren eigenen Ordner heruntergeladen und mit ihren eigenen Skripten erstellt. OpenSSL installiert sich normalerweise in C: \ OpenSSL auf Windows-Builds, also können Sie C: \ OpenSSL \ include und C: \ OpenSSL \ lib zu Ihrer Projektumgebung hinzufügen, um auf die OpenSSL-Header und Libs zuzugreifen. Die eigentlichen DLL-Dateien müssen Sie von C: \ OpenSSL \ bin in Ihren Projekt-Staging-Ordner kopieren (normalerweise Ihr SolutionDir \ Debug oder Release).

Sobald Sie einmal den mühseligen Aufbau von OpenSSL gemacht haben, wollen Sie es nicht noch einmal machen. Oder, wenn Sie die Binärdistribution heruntergeladen haben, ist es am besten in Ruhe. Dokumentieren Sie anderen Benutzern, welche Binärdistribution Sie verwendet haben, damit sie ihre Visual Studio-Buildumgebung entsprechend einrichten können.

Option 2 - Kleine Bibliotheken, die Visual Studio-Projekte für (oder schon haben) einfach zu erstellen sind. Lua und Sqllite fallen in diese Kategorie. Für Projekte, die klein genug sind, ist es nicht unpraktisch, sie einfach zu Ihrer Lösung in einem Unterordner hinzuzufügen. Auf diese Weise können Sie ihre Ausgaben direkt in den Ausgabeordner für die Lösungen bringen und Sie müssen keine Binärdateien vor dem Build in Ihrer Lösung zusammenfassen, so dass das Projekt viel einfacher mit anderen geteilt werden kann.

Option 3 - Alternativ können Sie Ihren eigenen standardisierten Ordner für die Produkte von Open-Source-Projekten erstellen. Erstellen Sie C: \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ <\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ' OSS-Projekt, kopiere die entsprechenden Dateien an diese Orte.

Auch wenn es bequem ist, macht es diese Einrichtung schwierig, die Build-Umgebung auf einem zweiten PC zu replizieren, also möchten Sie vielleicht auch den gesamten C: \ oss-Baum in der Quellcodeverwaltung behalten.

+0

Ich hatte gehofft, es gäbe eine geniale oder zumindest standardisierte Vorgehensweise, aber das scheint alle Möglichkeiten zu umfassen. –

+0

Das nächste Analogon zur Unix-Umgebung von Windows ist der binäre WinSxS-Ordner, der eine völlig unglaubliche Möglichkeit bietet, offizielle, signierte, aber binäre Builds von Bibliotheken so zu verteilen, dass mehrere verschiedene Versionen nebeneinander existieren können und Anwendungen (und Entwickler) könnten die Version wählen, die ihren Bedürfnissen entspricht. –

+0

Leider scheinen jedoch keine OSS-Projekte so zu funktionieren, dass (a) binäre Builds für Windows erstellt werden, (b) die Zertifikate zur digitalen Signierung ihrer Ausgaben für WinSxS-Include erhalten werden, (c) arsed, dies zu tun. –

1

Unter Windows ist der einfachste Weg, eigene DLLs zu erstellen und sie in das Programmverzeichnis aufzunehmen.

Ja es nutzt ein bisschen mehr Platz, aber HD sind in diesen Tagen groß und vermeidet viele Kopfschmerzen von inkompatiblen Versionen (DLL Hölle). Windows leidet auch ein paar mehr Falten mit Versionen von Bibliotheken mit verschiedenen Compiler gebaut, so dass Ihre eigenen Builds sichersten ist

+0

Aber wo legen Sie die Bibliotheksquellen? Kompilieren Sie sie separat oder mit dem Programm? –

+0

entpacken Sie die Bibliothek Quellen, wo immer Sie wollen auf Ihrem dev-Maschine, es ist oft einfacher, ein Verzeichnis ohne Leerzeichen statt in Programmdateien zu verwenden. Ich benutze c: \ soft \ name_of_lib, aber das spielt keine Rolle. Baue sie in ihrem Verzeichnis –

Verwandte Themen