构建一个具有 Emscripten 依赖项的项目

在这篇文章中,我将描述使用 Emscripten 构建一个由多个库组成的项目。
目前,Emscripten 不支持构建共享库,因此第一步是将所有库从 Shared 转移到 Static。 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/文档/compiling/Building-Projects.html#using-libraries

Leave a Comment

Your email address will not be published. Required fields are marked *