如何通过 'emcmake cmake/emmake make' 传递 'emcc' 选项?
How do I pass 'emcc' options through 'emcmake cmake/emmake make'?
我有一个 CMake 项目 (C++),我想通过 WebAssembly 在 JavaScript 中提供它。要配置它,我使用 emcmake cmake
并构建它 emmake make
。当我手动执行时,我可以成功编译部分:
emcc --bind test.cpp
但我想利用emmake
的优势。我需要 emcc
的参数 --bind
。 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);
}
事实证明,您可以使用 set_target_properties(...)
:
从 CMakeLists.txt
文件中传递 emcc
选项
CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8)
project(MyTest)
add_executable(mytest test.cpp)
set_target_properties(mytest PROPERTIES LINK_FLAGS "--bind")
这种方法几乎适用于所有参数,除了用于控制输出文件的 -o
参数:
- 如果要更改输出的名称,请更改目标的名称。
- 如果要更改输出目录,请在执行
add_executable(...)
之前用set(EXECUTABLE_OUTPUT_PATH subdir/for/emscripten)
更改可执行输出路径
- 如果要更改输出的文件类型,请在执行
add_executable(...)
之前根据您的needs更改可执行文件后缀为set(CMAKE_EXECUTABLE_SUFFIX ".mjs")
我有一个 CMake 项目 (C++),我想通过 WebAssembly 在 JavaScript 中提供它。要配置它,我使用 emcmake cmake
并构建它 emmake make
。当我手动执行时,我可以成功编译部分:
emcc --bind test.cpp
但我想利用emmake
的优势。我需要 emcc
的参数 --bind
。 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);
}
事实证明,您可以使用 set_target_properties(...)
:
CMakeLists.txt
文件中传递 emcc
选项
CMakeLists.txt
:
cmake_minimum_required(VERSION 2.8)
project(MyTest)
add_executable(mytest test.cpp)
set_target_properties(mytest PROPERTIES LINK_FLAGS "--bind")
这种方法几乎适用于所有参数,除了用于控制输出文件的 -o
参数:
- 如果要更改输出的名称,请更改目标的名称。
- 如果要更改输出目录,请在执行
add_executable(...)
之前用 - 如果要更改输出的文件类型,请在执行
add_executable(...)
之前根据您的needs更改可执行文件后缀为
set(EXECUTABLE_OUTPUT_PATH subdir/for/emscripten)
更改可执行输出路径
set(CMAKE_EXECUTABLE_SUFFIX ".mjs")