首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将“emcc”选项传递给“emcmake cmake/emmake”?

如何将“emcc”选项传递给“emcmake cmake/emmake”?
EN

Stack Overflow用户
提问于 2020-09-16 17:40:26
回答 1查看 2.9K关注 0票数 8

我有一个CMake项目(C++),希望通过WebAssembly在JavaScript中提供。要配置它,我使用emcmake cmake并构建emmake make。当我手动编译部件时,我可以成功编译:

代码语言:javascript
复制
emcc --bind test.cpp

但我想从emmake的优势中获利。我需要用于--bind的参数emcc。默认情况下,emmake不会添加它,这会导致错误:

代码语言:javascript
复制
error: undefined symbol: _embind_register_function (referenced by top-level compiled C/C++ code)

那么,当我使用emmake make进行构建时,如何添加它呢?我能把它传递给emmake吗?或者我可以在我的CMakeLists.txt中添加一些东西

MCRE:

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8)
project(MyTest)
add_executable(mytest test.cpp)

test.cpp

代码语言:javascript
复制
#include "emscripten/bind.h"

using namespace emscripten;

std::string getText()
{
    return "Hello there from C++!";
}

EMSCRIPTEN_BINDINGS(my_module) {
    function("getText", &getText);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 15:12:46

结果是,您可以通过使用emccCMakeLists.txt文件中传递set_target_properties(...)选项

CMakeLists.txt

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8)
project(MyTest)
add_executable(mytest test.cpp)
set_target_properties(mytest PROPERTIES LINK_FLAGS "--bind")

此方法适用于几乎所有参数,但用于控制输出文件的-o参数除外:

  • 如果要更改输出的名称,请更改目标的名称。
  • 如果要更改输出的目录,请在执行set(EXECUTABLE_OUTPUT_PATH subdir/for/emscripten)之前用add_executable(...)更改可执行输出路径。
  • 如果要更改输出的文件类型,请在执行set(CMAKE_EXECUTABLE_SUFFIX ".mjs")之前根据需求更改带有add_executable(...)的可执行后缀
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63925320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档