Win11如何用Emscripten构建lovejs运行库

🕒2026年01月23日 19:30:41  | 📖--  | 💬--  | 🏷️ , , ,
📝3317 个字  | ⌛要看完怎么也得9分钟吧

先超快地介绍一下背景

必要软件安装

下载lovejs工程

打包编译lovejs

	@echo off
	mkdir build
	mkdir build\release
	mkdir build\compat
	mkdir output
	mkdir output\release
	mkdir output\compat
	
	(
	rem echo Building release version...
	rem cd build\release
	rem call emcmake cmake %~dp0\project -G "Unix Makefiles" -DLOVE_JIT=0 -DCMAKE_BUILD_TYPE=Release
	rem call emmake make -j 6
	rem copy "love\love.js*" ..\..\output\release
	rem copy "love\love.wasm" ..\..\output\release
	rem copy "love\love.worker.js" ..\..\output\release
	
	rem cd ..\..
	
	echo Building compatibility version...
	cd build\compat
	call emcmake cmake %~dp0\project -G "Unix Makefiles" -DLOVE_JIT=0 -DCMAKE_BUILD_TYPE=Release -DLOVEJS_COMPAT=1
	call emmake make -j 6
	copy "love\love.js*" ..\..\output\compat
	copy "love\love.wasm" ..\..\output\compat
	)
	
	pause
	exit /b
	...
	
	echo Building compatibility version...
	cd build\compat
	call emcmake cmake %~dp0\project -G "Unix Makefiles" -DLOVE_JIT=0 -DCMAKE_BUILD_TYPE=Release -DLOVEJS_COMPAT=1 -DOFF64_T_run_result=0 -DOFF64_T_run_result__TRYRUN_OUTPUT=0
	call emmake make -j 6
	copy "love\love.js*" ..\..\output\compat
	copy "love\love.wasm" ..\..\output\compat
	
	...
	if(WIN32 AND CMAKE_GENERATOR MATCHES "Unix Makefiles")
	    set(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
	    set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
	    set(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
	    set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
	endif()
	
	# 针对 Emscripten 的特殊设置
	if(EMSCRIPTEN)
	    # 重写静态库创建命令以使用响应文件
	    set(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> cr <TARGET> <OBJECTS>")
	    set(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> cr <TARGET> <OBJECTS>")
	endif()