利用xmake在c++项目中编译与调用webassmebly

利用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)")
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 利用xmake在c++项目中编译与调用webassmebly