2014-10-25 1 views
2

Есть ли способ предотвратить создание emscripten глобального глобального модуля?Остановить Emscripten от создания глобального «модуля»

Я генерирую некоторые .js, используя что-то вроде emcc --bind -O3 --memory-init-file 0 whatever.... Если я включаю выходной скрипт, объект окна заливается различными внутренними функциями и объектами emscripten.

Я попытался обернуть сгенерированный код, как это:

Some.Namespace.Whatever = (функция() {... генерируемый код ...; возврата модуля;})();

Все работает нормально, но emscripten по-прежнему создает глобальный «модуль» с глобальным охватом (другие внутренние функции исчезли).

ответ

0

С this commit от 4 февраля этого года, который я считаю, является частью Emscripten> v1.29.9, если код обернут каким-либо способом, то Объект модуля не отображается в глобальной области.

0

Возможно, вы можете использовать параметры pre и post js, чтобы обернуть код в автономную исполняемую анонимную функцию? [0] Таким образом, он должен был бы (function() { и пост js был бы })();. Это можно было бы легко сделать вручную как часть шага сборки с Unix cat.

Это или засунуть его в рабочего. [1]

Я не думаю, что emscripten присваивает window.Module или this.Module в испускаемом коде, но я не компьютер, чтобы проверить прямо сейчас, может быть, вы могли бы?

[0] https://github.com/kripken/emscripten/blob/1c12291bcb77fac633d9fbe08c817746c4ce24c3/site/build/text/docs/tools_reference/emcc.txt#L269-L277

[1] https://github.com/kripken/emscripten/blob/1c12291bcb77fac633d9fbe08c817746c4ce24c3/site/build/text/docs/tools_reference/emcc.txt#L468-L474