Web uygulamasına dönüştürmek istediğim bir C++ projem var. Bu amaçla, projeyi oluşturmak için Emscripten'i kullanmak istiyorum.Emscripten ile Yükseltmeyi Kullanma
Proje, bazı dış kütüphaneleri kullanmaktadır. Pek çok kütüphanenin JavaScript versiyonunu derlemeyi veya bulmayı başardım ve şimdi Boost olanlarla sıkıştım. Aslında Boost için nasıl başlayacağımı bile bilmiyorum: kütüphaneleri oluşturmak için dosyaları oluşturmak için bir boostrap betiği kullanıyorlar. Araç setini bu betiğe aktarmak mümkündür ancak Emscripten açıkça desteklenmemektedir.
Projem, Boost'un aşağıdaki bölümlerini kullanmaktadır: Thread, Regex, FileSystem, Signals, System. Emscripten kullanarak bu kütüphaneleri nasıl derleyebilirim?
# 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 ;
}
# 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++" ;
}
ile:
Düzenleme
npclaudiu cevabını ardından, gcc araç ile kütüphane bootstrapped, sonra yerine derleyici yapılandırmak için project-config.jam
düzenlenebilir
Şimdi, ./b2
yazarak kütüphaneler etkili bir şekilde oluşturulur. Boost.Signals ve Boost.System iyi derleyin. Diğerleri bazı hatalar var.
libs/thread/src/pthread/thread.cpp:503:27: error: use of undeclared identifier 'pthread_yield'
BOOST_VERIFY(!pthread_yield());
^
Boost.Regex bildirilmemiş olması CHAR_BIT hakkında çok şey şikayet ama emscripten bir sorun gibi görünüyor:
Boost.Thread şikayet
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 başarısız görünüyor emscripten dolayı:
In file included from libs/filesystem/src/windows_file_codecvt.cpp:21:
/path/to/emscripten/system/include/libcxx/cwchar:117:9: error: no member named 'FILE' in the global namespace
using ::FILE;
~~^
Web arka uç veya ön uç:
şöyle b2 (veya bjam) ile derlemek sonra normal olarak, boostrap boost kullanmak için? –
Ön taraf olurdu. Bu bir web tarayıcısında oynanabilir olmak istediğim bir oyundur. – Julien
Sadece merak olmak için, emscripten kodu derlendiğinde Boost kaç tane alır? : D – GameDeveloper