我正在使用emscripten为某些库提供Javascript绑定。 Emsripten将代码打包到名称空间(global var)中,称为“模块”。
我想更改命名,以便我可以使用反映库所用内容的名称,并且还可以防止变量名称冲突,因为我为其他库编写了绑定。
我在文档中找不到任何地方,它显示了如何执行此操作。有谁知道如何更改emscripten使用的默认命名空间?
我正在使用emscripten为某些库提供Javascript绑定。 Emsripten将代码打包到名称空间(global var)中,称为“模块”。
我想更改命名,以便我可以使用反映库所用内容的名称,并且还可以防止变量名称冲突,因为我为其他库编写了绑定。
我在文档中找不到任何地方,它显示了如何执行此操作。有谁知道如何更改emscripten使用的默认命名空间?
你可以改变 EXPORT_NAME
默认设置为 Module
。您可以在命令行上执行此操作作为选项 emcc
:
emcc -s EXPORT_NAME="'MyEmscriptenModule'" <other options...>
然后,无论您指定的名称是什么,模块都将在全局范围内可用:
window.MyEmscriptenModule == {...}
请注意,如果您设置了 MODULARIZE
设置为1,然后设置为 EXPORT_NAME
将作为全局范围中的函数创建,您必须调用该函数来初始化模块。您可以将设置对象传递给此函数,它将返回模块实例:
var myModuleInstance = window.MyEmscriptenModule({noInitialRun: true});
如果您正在使用某些模块加载器(例如RequireJS),并且根本不想向全局命名空间添加任何内容,则可以选择使用 --pre-js <file>
和 --post-js <file>
包装最终Javascript的选项,如 这个回答Emscripten与模块加载器的问题。
你可以改变 EXPORT_NAME
默认设置为 Module
。您可以在命令行上执行此操作作为选项 emcc
:
emcc -s EXPORT_NAME="'MyEmscriptenModule'" <other options...>
然后,无论您指定的名称是什么,模块都将在全局范围内可用:
window.MyEmscriptenModule == {...}
请注意,如果您设置了 MODULARIZE
设置为1,然后设置为 EXPORT_NAME
将作为全局范围中的函数创建,您必须调用该函数来初始化模块。您可以将设置对象传递给此函数,它将返回模块实例:
var myModuleInstance = window.MyEmscriptenModule({noInitialRun: true});
如果您正在使用某些模块加载器(例如RequireJS),并且根本不想向全局命名空间添加任何内容,则可以选择使用 --pre-js <file>
和 --post-js <file>
包装最终Javascript的选项,如 这个回答Emscripten与模块加载器的问题。