Giter Club home page Giter Club logo

minimal-cmake-emscripten-project's Introduction

Minimal CMake-driven Emscripten project

The purpose of this project is to create a very basic minimal CMake project able to compile C++ program using emscripten with the following features enabled:

  • Linking to external C++ library crosscompiled to JS file
  • Using bindings created via Embind
  • Preloading assets files

How to use

  1. Create build directory build and go there
  2. Run cmake specifying toolchain file CMAKE_TOOLCHAIN_FILE=path/to/emscripten/emscripten/version/cmake/Modules/Platform/Emscripten.cmake
  3. Run make

Compiled file called client.js along with the preloaded assets in file client.data will be put into build.emscripten directory. Check if it works by opening build.emscripten/index.html in browser.

minimal-cmake-emscripten-project's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

minimal-cmake-emscripten-project's Issues

Errors

I believe I followed the instructions correctly, but I got these errors:

CMake Error at D:/prog/emsdk-portable-64bit/emscripten/1.37.35/cmake/Modules/Platform/Emscripten.cmake:108 (message):
Failed to fetch compiler version information with command
"'D:/prog/emsdk-portable-64bit/emscripten/1.37.35/emcc.bat' -v"! Process
returned with error code 1.
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.9/Modules/CMakeDetermineSystem.cmake:94 (include)
CMakeLists.txt:4 (project)

Linker Error with JavaScript Files

Thank you for providing this repo. I think I'm getting close but I have a linker error. Any troubleshooting ideas?

[100%] Linking CXX executable ../build.emscripten/client.js
"/Users/myusr/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/191.7479.33/CLion.app/Contents/bin/cmake/mac/bin/cmake" -E cmake_link_script CMakeFiles/client.dir/link.txt --verbose=1
/Users/myusr/repos/emsdk/fastcomp/emscripten/em++    -s DEMANGLE_SUPPORT=1 --preload-file /Users/myusr/Desktop/minimal-cmake-emscripten-project/assets --bind @CMakeFiles/client.dir/objects1.rsp  -o ../build.emscripten/client.js @CMakeFiles/client.dir/linklibs.rsp
error: undefined symbol: _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4findEcj
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
error: undefined symbol: _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5rfindEcj
error: undefined symbol: _ZNKSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7compareEPKc
error: undefined symbol: _ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv
error: undefined symbol: _ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv
error: undefined symbol: _ZNKSt3__16locale9use_facetERNS0_2idE
error: undefined symbol: _ZNKSt3__18ios_base6getlocEv
error: undefined symbol: _ZNSt11logic_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
error: undefined symbol: _ZNSt13runtime_errorC2ERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5eraseEjj
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcjj
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKc
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC1ERKS5_jjRKS4_
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev
error: undefined symbol: _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC1ERS3_
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD1Ev
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED2Ev
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEf
error: undefined symbol: _ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4syncEv
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5uflowEv
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6setbufEPci
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9showmanycEv
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev
error: undefined symbol: _ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev
error: undefined symbol: _ZNSt3__16localeD1Ev
error: undefined symbol: _ZNSt3__18ios_base4initEPv
error: undefined symbol: _ZNSt3__18ios_base5clearEj
error: undefined symbol: _ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev
error: undefined symbol: _ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev
error: undefined symbol: _ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev
error: undefined symbol: _Znaj
error: undefined symbol: _Znwj
error: undefined symbol: _ZNSt3__15ctypeIcE2idE
error: undefined symbol: _ZTINSt3__113basic_ostreamIcNS_11char_traitsIcEEEE
error: undefined symbol: _ZTINSt3__115basic_streambufIcNS_11char_traitsIcEEEE
error: undefined symbol: _ZTVNSt3__18ios_baseE
error: undefined symbol: _ZTVNSt3__19basic_iosIcNS_11char_traitsIcEEEE
Error: Aborting compilation due to previous errors
shared:ERROR: '/Users/myusr/repos/emsdk/node/8.9.1_64bit/bin/node /Users/myusr/repos/emsdk/fastcomp/emscripten/src/compiler.js /tmp/tmp83nrir8g.txt /Users/myusr/repos/emsdk/fastcomp/emscripten/src/embind/emval.js /Users/myusr/repos/emsdk/fastcomp/emscripten/src/embind/embind.js /Users/myusr/repos/emsdk/fastcomp/emscripten/src/library_pthread_stub.js' failed (1)
make[3]: *** [../build.emscripten/client.js] Error 1
make[2]: *** [CMakeFiles/client.dir/all] Error 2
make[1]: *** [CMakeFiles/client.dir/rule] Error 2
make: *** [client] Error 2

CMake Emscripten mapping

This repo is awesome btw!

I've had some issues with running the build.

When running make

I get the error: fatal error: 'emscripten/html5.h' file not found

I have my emscripten environment activated as well.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.