Dans cet article, je décrirai la construction d’un projet composé de plusieurs bibliothèques utilisant Emscripten.
Pour le moment, Emscripten ne prend pas en charge la création de bibliothèques partagées, la première étape consiste donc à transférer toutes les bibliothèques de Partagé vers Statique. Emscripten fonctionne avec ses propres fichiers d’inclusion, le problème de visibilité des fichiers d’en-tête doit donc être résolu en transmettant un lien symbolique du répertoire système vers la chaîne d’outils Emscripten :
ln -s /usr/local/include/FlameSteelFramework $EMSDK/fastcomp/emscripten/system/include/FlameSteelFramework
Si vous utilisez CMake, vous devez alors modifier SHARED->STATIC dans le fichier CMakeLists.txt de la méthode add_library. Vous pouvez créer une bibliothèque/application pour des liens statiques supplémentaires à l’aide des commandes :
emcmake cmake .
emmake make
Ensuite, vous devrez construire l’application principale en spécifiant les fichiers de bibliothèque *.a au stade de la liaison. Je n’ai pas pu spécifier un chemin relatif ; la construction s’est terminée correctement uniquement après avoir spécifié les chemins complets dans le fichier CMakeLists.txt :
elseif(EMSCRIPTEN)
target_link_libraries(${FSEGT_PROJECT_NAME} GL GLEW
/home/demensdeum/Sources/cube-art-project-bootstrap/cube-art-project/sharedLib/libCubeArtProject.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelEngineGameToolkitFSGL/libFlameSteelEngineGameToolkitFSGL.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelEngineGameToolkit/libFlameSteelEngineGameToolkit.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCore/libFlameSteelCore.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelBattleHorn/libFlameSteelBattleHorn.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FSGL/libFSGL.a
/home/demensdeum/Sources/cube-art-project-bootstrap/FlameSteelFramework/FlameSteelCommonTraits/libFlameSteelCommonTraits.a)
else()
Sources
https://emscripten.org/ docs/compiling/Building-Projects.html#using-libraries