1- cmake_minimum_required (VERSION 3.12 )
1+ cmake_minimum_required (VERSION 3.13 )
22
33project (PathFindingStatVisualizer)
44
@@ -9,12 +9,17 @@ if(MSVC)
99 add_compile_options (/utf-8 )
1010endif ()
1111
12- file (GLOB ASSETS "./assets" )
13- file (COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR } )
14-
1512set (SDL_LINK_LIBS)
1613
17- if (WIN32 )
14+ if (EMSCRIPTEN)
15+ message (STATUS "Configuring WebAssembly build with Emscripten" )
16+ add_compile_options (
17+ "SHELL:-sUSE_SDL=2"
18+ "SHELL:-sUSE_SDL_TTF=2"
19+ "SHELL:-sUSE_SDL_IMAGE=2"
20+ "SHELL:-sUSE_SDL_MIXER=2"
21+ )
22+ elseif (WIN32 )
1823 include_directories ("thirdparty/include" )
1924
2025 if (MSVC )
@@ -64,7 +69,7 @@ set(PATH_FINDING_VISUALIZER_SOURCES
6469 "status.h"
6570)
6671
67- if (WIN32 )
72+ if (WIN32 AND NOT EMSCRIPTEN )
6873 enable_language (RC )
6974 configure_file (
7075 "${CMAKE_SOURCE_DIR } /assets/icon/app_icon.rc.in"
@@ -76,19 +81,45 @@ endif()
7681
7782add_executable (PathFindingVisualizer ${PATH_FINDING_VISUALIZER_SOURCES} )
7883
79- if (WIN32 )
84+ if (WIN32 AND NOT EMSCRIPTEN )
8085 set_target_properties (PathFindingVisualizer PROPERTIES
8186 WIN32_EXECUTABLE "$<CONFIG :Release >"
8287 )
8388endif ()
8489
85- target_link_libraries (PathFindingVisualizer
86- applicationLib algorithmLib AframeworkLib imguiLib
90+ if (EMSCRIPTEN)
91+ set_target_properties (PathFindingVisualizer PROPERTIES SUFFIX ".html" )
92+ endif ()
93+
94+ target_link_libraries (
95+ PathFindingVisualizer
96+ applicationLib
97+ algorithmLib
98+ AframeworkLib
99+ imguiLib
87100 ${SDL_LINK_LIBS}
88101)
89102
90- add_custom_command (TARGET PathFindingVisualizer POST_BUILD
91- COMMAND ${CMAKE_COMMAND } -E copy_directory
92- "${CMAKE_SOURCE_DIR } /assets"
93- "$<TARGET_FILE_DIR :PathFindingVisualizer >/assets"
94- )
103+ if (EMSCRIPTEN)
104+ target_link_options (PathFindingVisualizer PRIVATE
105+ "SHELL:-sUSE_SDL_TTF=2"
106+ "SHELL:-sUSE_SDL_IMAGE=2"
107+ "SHELL:-sUSE_SDL_MIXER=2"
108+ "SHELL:--use-port=sdl2"
109+ "SHELL:--use-port=sdl2_image:formats=png"
110+ "SHELL:-sALLOW_MEMORY_GROWTH=1"
111+ "SHELL:-sASSERTIONS=1"
112+ "SHELL:-sNO_EXIT_RUNTIME=1"
113+ "SHELL:--preload-file ${CMAKE_SOURCE_DIR } /assets@/assets"
114+ "SHELL:--shell-file ${CMAKE_SOURCE_DIR } /web/shell.html"
115+ )
116+ else ()
117+ file (GLOB ASSETS "./assets" )
118+ file (COPY ${ASSETS} DESTINATION ${CMAKE_BINARY_DIR } )
119+
120+ add_custom_command (TARGET PathFindingVisualizer POST_BUILD
121+ COMMAND ${CMAKE_COMMAND } -E copy_directory
122+ "${CMAKE_SOURCE_DIR } /assets"
123+ "$<TARGET_FILE_DIR :PathFindingVisualizer >/assets"
124+ )
125+ endif ()
0 commit comments