All Articles

Mac OSのemscriptenビルドでCMakeがエラーになってしまう時の回避方法

Mac OSのemscriptenビルドでCMakeがエラーになってしまう時の回避方法

emscriptenに限った話では無いけど、cmakeでLLVM+Clangを使うビルドの時に起こるケースだと思います。私はemscriptenのビルドの際に詰まってしまったのでメモです。

EmscriptenでC言語をJavaScriptに変換する

Mac OS 10.8.5の環境でこのエントリの通り進めると、cmakeの際に、

Make Error at cmake/modules/HandleLLVMOptions.cmake:37 (message):
  Host Clang must be able to find libstdc++4.7 or newer!
Call Stack (most recent call first):
  CMakeLists.txt:317 (include)

と出てビルドに失敗してしまいます。Macではわりとある問題なのかもしれませんが、この場合はLLVM_ENABLE_LIBCXXを有効にするとOKとのこと。emscriptenでいうなら、emsdkのcmakeを実行するときにオプションを追加します:

446c446
<     cmdline = ['cmake', '-G', generator, '-DCMAKE_BUILD_TYPE=RelWithDebInfo', '-DLLVM_TARGETS_TO_BUILD=X86;JSBackend',
---
>     cmdline = ['cmake', '-G', generator, '-DCMAKE_BUILD_TYPE=RelWithDebInfo', '-DLLVM_TARGETS_TO_BUILD=X86;JSBackend', '-DLLVM_ENABLE_LIBCXX=ON',

と、-DLLVM_ENABLE_LIBCXX=ONというオプションを追加すればビルドできました。Mac環境でcmakeを使う場合に時々起きるかもしれませんので覚えておきます。