我有一个CMake项目(C++),希望通过WebAssembly在JavaScript中提供。要配置它,我使用emcmake cmake并构建emmake make。当我手动编译部件时,我可以成功编译:
emcc --bind test.cpp但我想从emmake的优势中获利。我需要用于--bind的参数emcc。默认情况下,emmake不会添加它,这会导致错误:
error: undefined symbol: _embind_register_function (referenced by top-level compiled C/C++ code)那么,当我使用emmake make进行构建时,如何添加它呢?我能把它传递给emmake吗?或者我可以在我的CMakeLists.txt中添加一些东西
MCRE:
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(MyTest)
add_executable(mytest test.cpp)test.cpp
#include "emscripten/bind.h"
using namespace emscripten;
std::string getText()
{
return "Hello there from C++!";
}
EMSCRIPTEN_BINDINGS(my_module) {
function("getText", &getText);
}发布于 2020-09-17 15:12:46
结果是,您可以通过使用emcc从CMakeLists.txt文件中传递set_target_properties(...)选项
CMakeLists.txt
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(...)的可执行后缀https://stackoverflow.com/questions/63925320
复制相似问题