Wie kompiliere ich die kleinstmögliche V8-Bibliothek für Windows?

Ich mache eine Spiele-Engine für die Schule und möchte Googles V8 verwenden, um JavaScript-Skripte in der Engine zu ermöglichen. Die Engine wurde mit Visual Studio 2013 geschrieben und da das endgültige Spiel 50 MB nicht überschreiten darf, möchte ich die Auswirkungen der V8-Dateigröße so gering wie möglich halten.

Suchend im Internet nach, wie man Sachen mit V8 macht, bin ich auf @ gestoß Eine Reihe von Tutorials zu V8, das mit einer vorkompilierten .lib-Datei für V8 geliefert wird. Es ist jedoch vier Jahre alt. Ich gehe davon aus, dass das Erstellen einer neueren Version allein die Leistung verbessern und Funktionen hinzufügen würde. Daher habe ich mich gestern intensiv mit dem V8-Erstellungsprozess beschäftigt und schließlich herausgefunden, wie V8 für Visual Studio kompiliert werden kann:

Installiere Googles "depot tools"Lauffetch v8

Auf diese Weise bekomme ich alles, was ich zum Generieren der V8 Visual Studio-Lösung benötige. Wenn ich sie kompiliere, funktioniert sie und generiert LIB- und DLL-Dateien. Wenn ich jedoch versuche, eine Testlösung zu erstellen und diese Bibliotheken damit zu verknüpfen, ist das unglaublich verwirrend.

Der Erstellungsprozess generiert die folgenden LIB-Dateien:

cctest.lib gmock.lib gtest.lib icui18n.lib icuuc.lib mksnapshot.lib unittest.lib v8.lib v8_base.lib v8_libbase.lib v8_libplatform.lib v8_nosnapshot.lib v8_snapshot.lib

Und die folgenden DLLs:

icudt.dll icui18n.dll icuuc.dll v8.dll

Irgendwann gestern habe ich viele der Bibliotheken (ich glaube, es war v8, v8_base und v8_snapshot) eingefügt und über alle DLLs in das Ausgabeverzeichnis meines Projekts kopiert, und es hat schließlich funktioniert. Wie bereits erwähnt, muss die Dateigröße von V8 jedoch so gering wie möglich sein. Ich benötige keinen i18n-Support. Gibt es also eine Möglichkeit, ohne diesen zu kompilieren? Wie ich oben schon sagte, habe ich eine alte Version der V8 .lib, für deren Ausführung keine DLL erforderlich ist. Sie wird kompiliert und funktioniert einwandfrei. Aber ich verpasse neue Funktionen und Verbesserungen, da sie vier Jahre alt sind alt? Und was bedeuten all diese .libs überhaupt? Ich kann keine Dokumentation darüber finden, welche was oder ähnliches tun.

Also ja, ich denke, wenn jemand Anweisungen geben oder mich auf eine Dokumentation hinweisen könnte, die helfen würde, wäre das großartig. Ich habe gestern fast den ganzen Tag versucht, dieses Problem zu lösen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage