@@ -203,6 +203,7 @@ set(PROJECT_RESOURCES_BINARY_DIR "$<TARGET_FILE_DIR:${PROJECT_NAME}>/resources")
|
||||
if(EXISTS "${PROJECT_RESOURCES_DIR}")
|
||||
file(GLOB_RECURSE PROJECT_RESOURCE_FILES CONFIGURE_DEPENDS
|
||||
"${PROJECT_RESOURCES_DIR}/*")
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
|
||||
add_custom_target(copy_resources ALL
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DSRC_DIR="${PROJECT_RESOURCES_DIR}"
|
||||
@@ -212,6 +213,7 @@ if(EXISTS "${PROJECT_RESOURCES_DIR}")
|
||||
DEPENDS ${PROJECT_RESOURCE_FILES}
|
||||
COMMENT "Copying resources directory")
|
||||
add_dependencies(${PROJECT_NAME} copy_resources)
|
||||
endif()
|
||||
set(HAS_PROJECT_RESOURCES TRUE)
|
||||
else()
|
||||
set(HAS_PROJECT_RESOURCES FALSE)
|
||||
@@ -240,12 +242,18 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
|
||||
if(HAS_PROJECT_RESOURCES)
|
||||
target_link_options(${PROJECT_NAME} PRIVATE
|
||||
"--preload-file"
|
||||
"${PROJECT_RESOURCES_BINARY_DIR}@resources"
|
||||
"${PROJECT_RESOURCES_DIR}@resources"
|
||||
)
|
||||
endif()
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
OUTPUT_NAME "index"
|
||||
SUFFIX ".html")
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-DBIN_DIR="$<TARGET_FILE_DIR:${PROJECT_NAME}>"
|
||||
-P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/create_index_zip.cmake"
|
||||
COMMENT "Creating snivy-web.zip from Emscripten output")
|
||||
else()
|
||||
find_package(OpenGL REQUIRED COMPONENTS OpenGL)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE OpenGL::GL)
|
||||
|
||||
@@ -9,13 +9,13 @@ This Is A Video Game Where You Feed The Snivy.
|
||||
## Build
|
||||
|
||||
After cloning and enter the repository's directory, make sure to initialize the submodules:
|
||||
|
||||
```git submodule update --init --recursive```
|
||||
|
||||
### Windows
|
||||
Visual Studio is recommended for build.
|
||||
|
||||
### Linux
|
||||
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
@@ -24,3 +24,6 @@ make
|
||||
```
|
||||
|
||||
If using VSCode, several tasks are available to quickly run and build.
|
||||
|
||||
### Emscripten
|
||||
Run the VSCode "web" task. Make sure you have the Emscripten SDK accessible at the EMSDK path variable.
|
||||
28
cmake/create_index_zip.cmake
Normal file
@@ -0,0 +1,28 @@
|
||||
if(NOT DEFINED BIN_DIR OR BIN_DIR STREQUAL "")
|
||||
message(FATAL_ERROR "BIN_DIR is required")
|
||||
endif()
|
||||
|
||||
set(ARCHIVE_PATH "${BIN_DIR}/snivy-web.zip")
|
||||
file(REMOVE "${ARCHIVE_PATH}")
|
||||
|
||||
file(GLOB INDEX_OUTPUTS "${BIN_DIR}/index.*")
|
||||
set(FILES_TO_ZIP "")
|
||||
foreach(FILE_PATH IN LISTS INDEX_OUTPUTS)
|
||||
if(NOT FILE_PATH STREQUAL ARCHIVE_PATH)
|
||||
get_filename_component(FILE_NAME "${FILE_PATH}" NAME)
|
||||
list(APPEND FILES_TO_ZIP "${FILE_NAME}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(FILES_TO_ZIP)
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}" -E tar cf "snivy-web.zip" --format=zip ${FILES_TO_ZIP}
|
||||
WORKING_DIRECTORY "${BIN_DIR}"
|
||||
RESULT_VARIABLE ZIP_RESULT
|
||||
)
|
||||
if(NOT ZIP_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Failed creating ${ARCHIVE_PATH}")
|
||||
endif()
|
||||
else()
|
||||
message(WARNING "No index.* files found in ${BIN_DIR}; skipping snivy-web.zip creation")
|
||||
endif()
|
||||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 71 KiB |