我在 Emscripten 预加载文件上做错了什么?



我有一个这样的目录结构:

workfolder
l4
font
Roboto-Black.ttf
sdl_font.c

当我试图用这个命令制作HTML文件时

emcc l4/sdl_font.c --emrun --preload-file l4/font -s USE_SDL=2 -s USE_SDL_TTF=2 -o bin/sdl_font.html

我得到这个错误:

cache:INFO: generating port: sysrootlibwasm32-emscriptenlibharfbuzz.a... (this will be cached in "E:progemsdkupstreamemscriptencachesysrootlibwasm32-emscriptenlibharfbuzz.a" for subsequent builds)
root:INFO: building port: harfbuzz
configure: cmake -G "Unix Makefiles" -BE:progemsdkupstreamemscriptencacheports-buildsharfbuzz -HE:progemsdkupstreamemscriptencacheportsharfbuzzharfbuzz-1.7.5 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=E:progemsdkupstreamemscriptencacheports-buildsharfbuzz -DFREETYPE_INCLUDE_DIRS=E:progemsdkupstreamemscriptencachesysrootincludefreetype2freetype;E:progemsdkupstreamemscriptencachesysrootincludefreetype2freetypeconfig -DFREETYPE_LIBRARY=E:progemsdkupstreamemscriptencachesysrootlibwasm32-emscriptenlibfreetype.a -DHB_HAVE_FREETYPE=ON
-DCMAKE_TOOLCHAIN_FILE=E:progemsdkupstreamemscriptencmakeModulesPlatformEmscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR="E:/prog/emsdk/node/14.15.5_64bit/bin/node.exe"
Traceback (most recent call last):
File "E:progemsdkupstreamemscriptenemcc.py", line 3317, in <module>
sys.exit(main(sys.argv))
File "E:progemsdkupstreamemscriptenemcc.py", line 3310, in main
ret = run(args)
File "E:progemsdkupstreamemscriptenemcc.py", line 1953, in run
system_libs.add_ports_cflags(cflags, shared.Settings)
File "E:progemsdkupstreamemscriptentoolssystem_libs.py", line 1855, in add_ports_cflags
port.get(Ports, settings, shared)
File "E:progemsdkupstreamemscriptentoolsportsharfbuzz.py", line 71, in get
return [shared.Cache.get_lib(get_lib_name(settings), create, what='port')]
File "E:progemsdkupstreamemscriptentoolscache.py", line 130, in get_lib
return self.get(name, *args, **kwargs)
File "E:progemsdkupstreamemscriptentoolscache.py", line 158, in get
creator(cachename)
File "E:progemsdkupstreamemscriptentoolsportsharfbuzz.py", line 64, in create
building.configure(configure_args)
File "E:progemsdkupstreamemscriptentoolsbuilding.py", line 326, in configure
run_process(args, stdout=stdout, stderr=stderr, env=env, **kwargs)
File "E:progemsdkupstreamemscriptentoolsshared.py", line 96, in run_process
ret = subprocess.run(cmd, check=check, input=input, *args, **kw)
File "E:progzzmalPython39libsubprocess.py", line 505, in run
with Popen(*popenargs, **kwargs) as process:
File "E:progzzmalPython39libsubprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "E:progzzmalPython39libsubprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Не удается найти указанный файл (File not found)

我尝试改变一些参数或路径,但我仍然得到这个错误。

我也遇到过这个问题。这是由于Harfbuzz库现在是SDL_ttf的依赖项。Harfbuzz需要安装make。在emscripten Github上有一个开放的问题,它建议了几个解决方法:

  1. 等待2.0.16版本
  2. 用#13655
  3. 的补丁在本地修改tools/ports/harfbuzzy .py
  4. 在Windows机器上安装make

最新更新