50 lines
1.4 KiB
CMake
50 lines
1.4 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(src)
|
|
|
|
# 创建可执行文件
|
|
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"
|
|
) |