読者です 読者をやめる 読者になる 読者になる

DRYな備忘録

Don't Repeat Yourself.

Emscriptenとはなんじゃらほい

d.hatena.ne.jp

とりあえず使ってみるしかない

SDKインストール

Download and install — Emscripten 1.29.12 documentation

自分の開発環境はMacOSXなので、emsdk-portable.tar.gzをダウンロードして、適当に~/emsdk_portableに展開。

こうなった

% tree ~/emsdk_portable
emsdk_portable
├── README.md
├── emsdk
├── emsdk_env.sh
└── emsdk_manifest.json

0 directories, 4 files
brew install cmake
% cd ~/emsdk_portable
% ./emsdk install sdk-incoming-64bit
# 中略
Done installing tool 'emscripten-incoming-64bit'.
Done installing SDK 'sdk-incoming-64bit'.
% ./emsdk activate sdk-incoming-64bit
Writing .emscripten configuration file to user home directory /Users/otiai10/
The Emscripten configuration file /Users/otiai10/.emscripten has been rewritten with the following contents:

import os
SPIDERMONKEY_ENGINE = ''
NODE_JS = 'node'
LLVM_ROOT='/Users/otiai10/emsdk_portable/clang/fastcomp/build_incoming_64/bin'
NODE_JS='/Users/otiai10/emsdk_portable/node/0.10.18_64bit/bin/node'
EMSCRIPTEN_ROOT='/Users/otiai10/emsdk_portable/emscripten/incoming'
EMSCRIPTEN_NATIVE_OPTIMIZER='/Users/otiai10/emsdk_portable/emscripten/incoming_64bit_optimizer/optimizer'
V8_ENGINE = ''
TEMP_DIR = '/var/folders/gb/0m0ysgm57k74p0kynmmp354h0000gn/T'
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]

To conveniently access the selected set of tools from the command line, consider adding the following directories to PATH, or call 'source ./emsdk_env.sh' to do this for you.

   /Users/otiai10/emsdk_portable:/Users/otiai10/emsdk_portable/clang/fastcomp/build_incoming_64/bin:/Users/otiai10/emsdk_portable/node/0.10.18_64bit/bin:/Users/otiai10/emsdk_portable/emscripten/incoming
%

つかう

hoge.c

#include <stdio.h>

int main(void) {
    printf("Hello, Emscripten");
}
% ./emsdk_portable/emscripten/incoming/emcc hoge.c -o hoge.js

hoge.jsができてるので、nodeで実行する。

ブラウザで読み込んでもconsoleでHello, Emscriptenとconsole.logされてた。← ここだいじ

cppのライブラリをincludeしてもコンパイルされたjsはブラウザで動くとすれば、これはすごいことだ(雑

とりあえずのDRYな備忘録として