Created
April 5, 2025 17:23
-
-
Save izzyreal/97c46e9324c2d0d5981c419ab24bdbd1 to your computer and use it in GitHub Desktop.
CMakeLists.txt for Emscripten + asm-dom frontend
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| cmake_minimum_required (VERSION 3.13) | |
| set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | |
| project(asm-dom-cmake | |
| LANGUAGES CXX | |
| VERSION 0.1.0 | |
| ) | |
| if(DEFINED EMSCRIPTEN_ROOT_PATH) | |
| set(CMAKE_SYSROOT "${EMSCRIPTEN_ROOT_PATH}/cache/sysroot") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${CMAKE_SYSROOT}/include/compat") | |
| endif() | |
| include(cmake/release-mode.cmake) | |
| include(cmake/asm-dom.cmake) | |
| add_executable(main src/main.cpp src/Overview.cpp src/App.cpp src/Header.cpp) | |
| set_property(TARGET main PROPERTY CXX_STANDARD 11) | |
| target_link_libraries(main PRIVATE asm-dom fetch) | |
| target_link_options(main PRIVATE "-s FETCH" "-sINITIAL_MEMORY=32MB" "-sMAXIMUM_MEMORY=128MB" "-sALLOW_MEMORY_GROWTH=1") | |
| execute_process(COMMAND em++ --cflags OUTPUT_VARIABLE EM_CFLAGS) | |
| set_target_properties(main PROPERTIES COMPILE_FLAGS "${EM_CFLAGS}") | |
| add_custom_target(copy_index ALL | |
| COMMAND ${CMAKE_COMMAND} -E copy_if_different | |
| ${CMAKE_CURRENT_SOURCE_DIR}/src/index.html | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/product/index.html | |
| DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/index.html | |
| ) | |
| add_custom_target(copy_style ALL | |
| COMMAND ${CMAKE_COMMAND} -E copy_if_different | |
| ${CMAKE_CURRENT_SOURCE_DIR}/src/style.css | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/product/style.css | |
| DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/style.css | |
| ) | |
| add_dependencies(main copy_style copy_index) | |
| add_custom_command( | |
| TARGET main | |
| POST_BUILD | |
| COMMAND ${CMAKE_COMMAND} -E copy | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/main.js | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/product/main.js | |
| ) | |
| add_custom_command( | |
| TARGET main | |
| POST_BUILD | |
| COMMAND ${CMAKE_COMMAND} -E copy | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/main.wasm | |
| ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/product/main.wasm | |
| ) | |
| if (PROJECT_IS_TOP_LEVEL) | |
| execute_process( | |
| COMMAND ${CMAKE_COMMAND} -E create_symlink | |
| ${CMAKE_BINARY_DIR}/compile_commands.json | |
| ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json | |
| ) | |
| endif() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment