将Emscripten整合到Clion中

时间:2018-08-16 02:30:22

标签: javascript c++ cmake clion emscripten

我最近正在从事一个使用Emscripten的项目。我可以在终端上安装并运行一些示例,但是我想将其与Clion集成在一起,以便可以将emscripten直接包含到我的主项目中并进行构建。我试图将目录添加到New-Folder -Name myFolder -Location (Get-Folder -Name datastore) ,但是在构建目录时出错。谁能帮助我找到将Emscripten集成到Clion中的适当方法,或对包含在CMakeList中的内容的任何建议。任何帮助将不胜感激。谢谢您的宝贵时间。

我将这些行包含在演示项目的CMakeList中:

CMakeList

以下是错误:

cmake_minimum_required(VERSION 3.12)

project(projectShell)

set(CMAKE_CXX_STANDARD 14)
if (${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
set(CMAKE_C_COMPILER "emcc")
endif ()
include_directories(include/rapidjson)
include_directories(/home/myfastcomp/emscripten/emscripten/system/include 
)
add_executable(projectShell main.cpp library.cpp library.h)
if (${CMAKE_SYSTEM_NAME} MATCHES "Emscripten")
set_target_properties(projectShell PROPERTIES LINK_FLAGS "-o 
dist/projectShell.js -s USE_FREETYPE=1 -s DISABLE_EXCEPTION_CATCHING=0 -s DEMANGLE_SUPPORT=1 -s SAFE_HEAP=1 --bind -s WASM=1 -O2 -s LEGACY_GL_EMULATION=0  -s GL_UNSAFE_OPTS=0 --pre-js pre-module.js --post-js post-module.js -s ASSERTIONS=1 -s GL_ASSERTIONS=1 -s INVOKE_RUN=0  -std=c++11 -s USE_WEBGL2=1 -s FULL_ES3=1 -s USE_GLFW=3 -s OFFSCREENCANVAS_SUPPORT=1 --preload-file textures --preload-file shaders --preload-file fonts")
endif()

3 个答案:

答案 0 :(得分:2)

您可以通过创建工具链,设置正确的环境变量和设置编译选项来使用emscripten进行编译。

构建,执行,部署>工具链中,添加一个新的系统工具链,并使用以下选项将其命名为Emscripten:

  • CMake:不变
  • 制作:不变
  • C编译器:emcc的路径
  • C ++编译器:em ++的路径
  • 调试器:不变

然后在 Build,Execution,Deployment> CMake 中添加新的配置文件,例如Debug-Emscripten。选择Emscripten工具链。您将需要设置emcmake添加的CMake选项和环境变量。您可以通过设置环境变量EM_BUILD_VERBOSE=3来查看选项,但是,要查看需要在Emscripten的源代码中挖掘的环境(在我的机器上,函数/usr/lib/emscripten/tools/shared.py中的get_building_env)。 / p>

要添加的CMake选项是:

  • -DCMAKE_CROSSCOMPILING_EMULATOR=path/to/node
  • -DCMAKE_TOOLCHAIN_FILE=path/to/cmake/Modules/Platform/Emscripten.cmake

我必须在计算机上添加的环境变量是:

  • CC=path/to/emscripten/emcc
  • CXX=path/to/emscripten/em++
  • AR=path/to/emscripten/emar
  • LD=path/to/emscripten/emcc
  • NM=path/to/emscripten-llvm/llvm-nm
  • LDSHARED=path/to/emscripten/emcc
  • RANLIB=path/to/emscripten/emranlib
  • EMMAKEN_COMPILER=path/to/emscripten-llvm/clang++
  • EMSCRIPTEN_TOOLS=path/to/emscripten/tools
  • HOST_CC=path/to/emscripten-llvm/clang
  • HOST_CXX=path/to/emscripten-llvm/clang++
  • HOST_CFLAGS=-W
  • HOST_CXXFLAGS=-W
  • PKG_CONFIG_LIBDIR=path/to/emscripten/system/local/lib/pkgconfig:path/to/emscripten/system/lib/pkgconfig
  • PKG_CONFIG_PATH=
  • EMSCRIPTEN=path/to/emscripten
  • CROSS_COMPILE=path/to/emscripten/em

您现在应该可以通过选择Debug-Emscripten配置进行编译。

答案 1 :(得分:1)

我使用app.post('/webhooks', function (req, res) { if (req.body.event_type == 'PAYMENT.CAPTURE.COMPLETED') { headers = { 'Accept' : 'application/json', 'Content-Type' : 'application/json', 'Authorization' : 'Bearer <AUTH_TOKEN>' } // Get the data for the API call of the webhook request data = { 'transmission_id': req.headers['paypal-transmission-id'], 'transmission_time': req.headers['paypal-transmission-time'], 'cert_url': req.headers['paypal-cert-url'], 'auth_algo': req.headers['paypal-auth-algo'], 'transmission_sig': req.headers['paypal-transmission-sig'], 'webhook_id': '41G05244UL253035G', 'webhook_event' : req.body } request.post({ url: 'https://api.sandbox.paypal.com/v1/notifications/verify-webhook-signature', headers: headers, form: data, }, (error, response, body) => { if (error) { console.error(error) return } console.log(response.statusCode); }); } res.sendStatus(200); }); 在偏好设置-> build-> cmake中设置了emscripten的工具链

在项目cmake中,我将源链接到可执行文件。对于编译标志,我使用了参数。

-DCMAKE_TOOLCHAIN_FILE=..../sdks/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake

答案 2 :(得分:0)

CLion无法很好地理解“ emcmake”和“ emmake”命令的概念。目前最好的方法是从终端运行它。

从理论上讲,应该可以不使用emcmake命令,而将CMake CLion设置配置为使用特定于脚本的工具链cmake文件,但是由于某些原因,它不能很好地工作