# ED_Test **Repository Path**: naka507/ed_test ## Basic Information - **Project Name**: ED_Test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-25 - **Last Updated**: 2024-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ED_Demo * 使用 `Emscripten` 开发 `SDL2` 应用 * 技术栈:Emscripten + Cmake + Ninja + SDL2 ## 编译 ```sh // WEB cmake -D CMAKE_TOOLCHAIN_FILE=D:/cpp/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -G "Ninja" -D CMAKE_BUILD_TYPE=Release -S "./" -B "./emscripten" // EXE cmake -D CMAKE_TOOLCHAIN_FILE=D:/Microsoft/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -D CMAKE_BUILD_TYPE=Release -D VCPKG_TARGET_TRIPLET=x64-windows-static -S "./" -B "./build" ``` ## 发布 ```sh // WEB cd emscripten && emmake ninja // EXE cd build && cmake --build . --config Release ``` chcp 65001 ## 备注 * MEMFS:运行时默认包含的,所有文件都存在内存中,页面重载写入的数据都会消失。 * NODEFS:此文件系统仅在node.js内部运行时使用,编译时添加-lnodefs.js选项。 * DBFS:IndexedDB文件系统,仅在浏览器内运行代码时使用,编译时添加-lidbfs.js选项。 * WORKERFS:该文件系统只能在一个worker中使用,并且只能只读访问,编译时添加-lworkerfs.js 选项 * PROXYFS ```c++ std::string vectorToString(const std::vector &vec) { std::ostringstream res; res << "["; for (size_t i = 0; i < vec.size(); ++i) { if (i != 0) { res << ", "; } res << vec[i]; } res << "]"; return res.str(); } std::string vectorToString(const std::vector &vec) { std::ostringstream res; res << "["; for (size_t i = 0; i < vec.size(); ++i) { if (i != 0) { res << ", "; } res << vec[i]; } res << "]"; return res.str(); } std::string vectorToString(const std::vector &vec) { std::ostringstream res; res << "["; for (size_t i = 0; i < vec.size(); ++i) { if (i != 0) { res << ", "; } res << valueToJson(vec[i]); } res << "]"; return res.str(); } std::string valueToJson(const SDL::Value &value) { std::ostringstream res; switch (value.getType()) { case SDL::Value::Type::STRING: res << "\"" << value.asString() << "\""; break; case SDL::Value::Type::INTEGER: res << value.asInt(); break; case SDL::Value::Type::VECTOR: res << vectorToString(value.asValueVector()); break; case SDL::Value::Type::MAP: res << valueMapToJson(value.asValueMap()); break; default: break; } return res.str(); } std::string valueMapToJson(const SDL::ValueMap &valueMap) ```