利用xmake在c++项目中编译与调用webassmebly
最近在尝试用webassembly替代lua作为c++程序的脚本。刚好xmake也支持了webassembly的编译。下面是踩坑记录。
项目需要两个target:一个c++项目、一个webassembly项目。需要自动编译webassembly,并且c++项目依赖webassembly的编译结果。下面是我的测试项目的xmake配置:
add_requires("conan::wasmer/2.3.0", {alias="wasmer",configs={vs_runtime="MT"}}) target("scripts") set_plat("wasm") set_toolchains("emcc") set_kind("binary") add_files("scripts/*.cpp") add_cleanfiles("scriptsout/*.*") add_cxflags("-O3") add_ldflags("-sERROR_ON_UNDEFINED_SYMBOLS=0") after_build(function(target) local dir = target:targetdir() local filename = target:basename() .. ".wasm" local filepath = path.join(dir, filename) local outdir = "scriptsout" os.mkdir(outdir) os.cp(filepath, outdir) end) target("wasmertest") add_cxflags("/MT") set_languages("cxx20") add_rules("mode.debug", "mode.release") add_links("advapi32") set_kind("binary") add_files("src/*.cpp") add_deps("scripts") add_packages("wasmer") set_rundir("$(projectdir)")