Files
smart_wasm/CMakeLists.txt
2026-06-01 16:57:39 +08:00

57 lines
1.5 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(smart_wasm_json)
# 设置 Emscripten 工具链
if(NOT DEFINED EMSCRIPTEN_ROOT_PATH)
set(EMSCRIPTEN_ROOT_PATH "E:/emsdk/upstream/emscripten")
endif()
if(EXISTS "${EMSCRIPTEN_ROOT_PATH}/cmake/Modules/Platform/Emscripten.cmake")
set(CMAKE_TOOLCHAIN_FILE "${EMSCRIPTEN_ROOT_PATH}/cmake/Modules/Platform/Emscripten.cmake")
else()
message(FATAL_ERROR "Emscripten toolchain file not found")
endif()
# C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 源文件
set(SOURCES
src/main.cpp
src/math_utils.cpp
src/smart_json_wrapper.cpp
)
# 头文件目录
include_directories(
include
third_party
third_party/kdl_parser/include
third_party/orocos_kdl/install_wasm/include
third_party/eigen3
)
# 创建可执行文件
add_executable(smart_wasm ${SOURCES})
# 设置编译选项
target_compile_options(smart_wasm PRIVATE
-O3
-s WASM=1
-s EXPORTED_FUNCTIONS='["_smart_process_json","_smart_get_function_list","_smart_get_function_info","_smart_test_match","_smart_get_version","_smart_free_string","_malloc","_free"]'
-s EXPORTED_RUNTIME_METHODS='["ccall","cwrap","UTF8ToString","stringToUTF8","lengthBytesUTF8"]'
-s ALLOW_MEMORY_GROWTH=1
-s MODULARIZE=1
-s EXPORT_NAME='createSmartMathModule'
-s ENVIRONMENT='web'
-s ASSERTIONS=1
)
# 输出设置
set_target_properties(smart_wasm PROPERTIES
SUFFIX ".js"
OUTPUT_NAME "smart_math"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/public/wasm"
)