この投稿では、Emscripten を使用して複数のライブラリで構成されるプロジェクトを構築する方法について説明します。
現時点では、Emscripten は共有ライブラリの構築をサポートしていないため、最初のステップはすべてのライブラリを共有ライブラリから静的ライブラリに転送することです。 Emscripten は独自のインクルード ファイルを使用して動作するため、ヘッダー ファイルの可視性に関する問題は、システム ディレクトリから Emscripten ツールチェーンに転送することで解決する必要があります。
ln -s /usr/local/include/FlameSteelFramework $EMSDK/fastcomp/emscripten/system/include/FlameSteelFramework
CMake を使用している場合は、add_library メソッドの CMakeLists.txt ファイルで SHARED->STATIC を変更する必要があります。次のコマンドを使用して、さらに静的リンクを行うためのライブラリ/アプリケーションを構築できます。
emcmake cmake .
emmake make
次に、リンク段階で *.a ライブラリ ファイルを指定してメイン アプリケーションを構築する必要があります。相対パスを指定できませんでした。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()
ソース
https://emscripten.org/ docs/compiling/Building-Projects.html#using-libraries