make编译完成之后怎么执行(利用xmake在c++项目中编译与调用webassmebly)
最近在尝试用webassembly替代lua作为c++程序的脚本 。刚好xmake也支持了webassembly的编译 。下面是踩坑记录 。
项目需要两个target:一个c++项目 、一个webassembly项目 。需要自动编译webassembly ,并且c++项目依赖webassembly的编译结果 。下面是我的测试项目的xmake配置:
webassembly的实现我选用了wasmer 。第一个target是webassembly项目 。我选用了emscripten作为编译工具 。实现了after_build事件 ,用于在编译完成后将wasm文件拷贝到项目目录下的scriptsout目录 。并且也设置了cleanfiles ,这样清理项目的时候可以自动清理scriptsout目录。“ERROR_ON_UNDEFINED_SYMBOLS ”是emscripten的编译选项 ,用于通知编译器发现使用了外部导入的函数不要报错 。第二个target是c++项目 ,就正常设置即可 ,这里设置了依赖scripts 。最后设置运行目录为项目目录 ,这样每次运行的时候可以方便的引用到scriptsout目录。
后记:本来想使用wamr的 ,但官方没有提供conan包 ,所以只好使用wasmer了 。我尽量使用wasm-c-api,这样后面切换起来也方便 。还有xmake官方说支持wasi不过我还没尝试成功。看源码wasi调用的是clang ,可能是我的编译目标没设置对 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!