Skip to content

Instantly share code, notes, and snippets.

@faithandbrave
Last active October 11, 2022 05:08
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save faithandbrave/9b3d439d135e63abdbe7 to your computer and use it in GitHub Desktop.
Save faithandbrave/9b3d439d135e63abdbe7 to your computer and use it in GitHub Desktop.
EmscriptenとCMakeでのビルド方法

EmscriptenとCMakeでのビルド方法

Emscriptenは、C++をJavaScriptにコンパイルする、LLVMベースのコンパイラ。

このドキュメントでは、特定のプロジェクトに依存せず、Emscripten向けに、CMakeを使用してC++プロジェクトをビルドする方法を紹介する。

バージョン

このドキュメントで扱う各ツールのバージョンは、以下のものとする:

  • Windows 8.1
  • Emscripten 1.34.1
  • CMake 2.8
  • Visual Studio 2013

1. Emscripten SDKをインストールする。

Download and install - Emscripten documentation

上記のページから、Windows環境向けの「Emscripten SDK Offline Installer」をダウンロードし、インストールする。(1.34.1現在、Web Installerはインストール先と環境変数が食い違ってしまうため、うまくいかないので注意)

下記のようなインストール結果が確認できれば、インストール成功:

  1. バージョン1.34.1を想定する。
  2. 「C:\Program Files\Emscripten\emscripten\1.34.1」というディレクトリができていること。
  3. システム環境変数のEMSCRIPTENができており、2. で記述したディレクトリが設定されていること。このディレクトリが、CMake上では${EMSCRIPTEN_ROOT_PATH}という変数に設定される。
  4. システム環境変数のPathに、2. で記述されたディレクトリが設定されていること。

2. CMakeをインストールする。

http://www.cmake.org/download/

CMakeの公式サイトから、最新バージョンのCMakeをダウンロードしてインストールする。2.8以降であれば、どのバージョンでもかまわない。

3. MinGWのmakeをインストールする。

Emscripten向けには、CMakeでVisual Studioのプロジェクトを作成できない。これは、CMakeがVisual Studioのビルドターゲット設定(DebugとかReleaseとか)をカスタマイズできないためである。

そのため、以下のようなビルドを行う:

  • MinGWのMakefileを、CMakeで作る
  • Visual StudioのNMakeを使用してビルドする

MinGWのmakeをインストールするには、まず以下のページから、MinGWのインストーラをダウンロードして、"インストーラを"インストールする。

http://www.mingw.org/wiki/getting_started

このインストーラを使用して、以下のようなコマンドで、mingw32-makeをインストールする。

cd C:\MinGW\bin
mingw-get install mingw32-make

4. C++プロジェクトを用意する

以下の構成で、C++プロジェクトを用意する。

+ emc_sample
  + cmake_dir
  + ecmake_dir
  CMakeLists.txt
  main.cpp

main.cppは、以下のようなHello Worldプログラムであるとする。

#include <iostream>

int main()
{
    std::cout << "Hello World" << std::endl;
}

CMakeLists.txtは、以下のように記述する。

cmake_minimum_required(VERSION 2.8)

set(CMAKE_BUILD_TYPE Debug)

add_executable(emc_sample main.cpp)

if (EMSCRIPTEN)
    set(CMAKE_EXECUTABLE_SUFFIX ".html") # デフォルトでは.js
endif()

5. Windows向けにビルドする

以下のコマンドを入力する:

cd cmake_dir
cmake ..

これで、Visual Studioのプロジェクトが作成されるので、そのプロジェクトを開いてビルドし、実行すると「Hello World」がコンソールに出力される。

6. Emscripten向けにビルドする

まず、Visual Studioのコマンドプロンプトを起動する。これは、nmakeへのパスを事前に通すために必要となる。

次に、以下のコマンドでビルドする:

cd ecmake_dir
emcmake cmake .. -G "MinGW Makefiles"
nmake

これで、ecmake_dirディレクトリ以下に、emc_sample.htmlとemc_sample.jsという2つ実行ファイルが作成される。

htmlを開くと、Hello Worldがコンソールに出力される。

emcmakeについて

emcmakeは、以下のような、Emscripten環境向けのツールチェインの登録を、自動的に行ってくれるものだと考えればよい。

cmake DCMAKE_TOOLCHAIN_FILE=<EmscriptenRoot>/cmake/Modules/Platform/Emscripten.cmake
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment