c++ - 如何包含 <emscripten/emscripten.h>

标签 c++ cmake webassembly

我需要将什么添加到我的 CMakeLists.txt 文件中,以便下面的示例来自 here还能建吗?

我可以毫无问题地生成 WASM,但不知道要在我的 CMakeLists.txt 中添加什么以停止出现错误,当我尝试运行 C 代码时

fatal error: 'emscripten/emscripten.h' file not found #include <emscripten/emscripten.h>

我试着找例子,但遗憾的是我没有找到。

#include <stdio.h>
#include <emscripten/emscripten.h>
    
int main(int argc, char ** argv) {
    printf("Hello World\n");
}
    
#ifdef __cplusplus
extern "C" {
#endif
    
EMSCRIPTEN_KEEPALIVE void myFunction(int argc, char ** argv) {
    printf("MyFunction Called\n");
}
    
#ifdef __cplusplus
}
#endif

我的 CMakeLists.txt 目前是准系统,包含以下内容:

cmake_minimum_required(VERSION 3.17)
project(WASM)
    
set(CMAKE_CXX_STANDARD 14)
    
add_executable(WASM main.cpp)

最佳答案

请务必在配置时使用名为 emcmake 的 emsdk 提供的 cmake 包装器脚本。该脚本负责为 emsdk 设置编译环境,即:

   $ mkdir build
   $ cd build
   $ /path/to/emcmake cmake ..
   $ make

另见以下 Github issue .

关于c++ - 如何包含 <emscripten/emscripten.h>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65466537/

相关文章:

c++ - 无法从类数组访问数组

c++ - 从 dll 使用 gdi+ 时进程不退出

c++ - 无法从使用 Cmake 创建的可执行文件中删除符号名称

cmake - CMockery 编译未知类型名称 "jmp_buf"

通过 WASM 构建新的 Rust Vec 时,JavaScript ArrayBuffer "detaches"

c++ - 给定日期和时间,你如何获得大纪元时间?

c++ - 为什么不能将类的类型成员作为模板参数传递?

c++ - AirSim/Unity 在 macOS 上构建 ('boost/filesystem.hpp' 文件未找到)

javascript - 如何协调宿主 JS 和 Wasm 模块之间的内存访问?

c++ - 使用 bazel 和 emscripten 构建 Web 程序集