Ich habe ein C++ Projekt, das ich in eine Webanwendung konvertieren möchte. Zu diesem Zweck möchte ich Emscript verwenden, um das Projekt zu erstellen.Boost mit Emscript verwenden
Das Projekt verwendet einige externe Bibliotheken. Ich habe es geschafft, die JavaScript-Version der meisten Bibliotheken zu kompilieren oder zu finden und jetzt bin ich mit den Boost-Dateien fest. Eigentlich weiß ich gar nicht, wie ich bei Boost anfangen soll: Sie benutzen ein Boostrap-Skript, um die Dateien zum Erstellen der Bibliotheken zu erzeugen. Es ist möglich, das Toolset an dieses Skript zu übergeben, aber Emscripten wird offensichtlich nicht unterstützt.
Mein Projekt verwendet die folgenden Teile von Boost: Thread, Regex, Dateisystem, Signale, System. Wie kann ich diese Bibliotheken mit Emscripten kompilieren?
bearbeiten
die Antwort von npclaudiu Folgen, ich die Bibliothek mit dem gcc-Toolkit Bootstrap, dann bearbeiten ich project-config.jam
die Compiler zu konfigurieren, zu ersetzen:
# Compiler configuration. This definition will be used unless
# you already have defined some toolsets in your user-config.jam
# file.
if ! gcc in [ feature.values <toolset> ]
{
using gcc ;
}
mit
# Compiler configuration. This definition will be used unless
# you already have defined some toolsets in your user-config.jam
# file.
if ! gcc in [ feature.values <toolset> ]
{
using gcc : : "/full/path/to/em++" ;
}
Nun können Sie mit der Eingabe ./b2
die Bibliotheken erstellen. Boost.Signals und Boost.System kompilieren sich gut. Die anderen haben einige Fehler.
Boost.Thread klagt:
libs/thread/src/pthread/thread.cpp:503:27: error: use of undeclared identifier 'pthread_yield'
BOOST_VERIFY(!pthread_yield());
^
Boost.Regex viel über CHAR_BIT klagt nicht angemeldeten, aber es scheint ein Problem in Emscripten zu sein:
In file included from libs/regex/build/../src/c_regex_traits.cpp:28:
In file included from ./boost/regex/v4/c_regex_traits.hpp:26:
In file included from ./boost/regex/v4/regex_workaround.hpp:35:
/path/to/emscripten/system/include/libcxx/vector:1989:92: error: use of undeclared identifier 'CHAR_BIT'
static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);
^
Boost.Filesystem scheint zum Scheitern verurteilt wegen emscripten auch:
Web-Backend oder Frontend? –
Es wäre Frontend. Es ist ein Spiel, das ich in einem Webbrowser spielen möchte. – Julien
Um nur neugierig zu sein, wie viele MB braucht Boost, wenn es kompiliert wird, um Code zu emscripten? : D – GameDeveloper