|
@@ -1,35 +1,46 @@
|
|
|
|
|
|
# Introduction to SDL with Emscripten
|
|
|
|
|
|
+The easiest way to use SDL is to include it as a subproject in your project.
|
|
|
+
|
|
|
+We'll start by creating a simple project to build and run [hello.c](hello.c)
|
|
|
+
|
|
|
First, you should have the Emscripten SDK installed from:
|
|
|
|
|
|
https://emscripten.org/docs/getting_started/downloads.html
|
|
|
|
|
|
-We'll start by creating a simple project to build and run [hello.c](hello.c)
|
|
|
+Create the file CMakeLists.txt
|
|
|
+```cmake
|
|
|
+cmake_minimum_required(VERSION 3.16)
|
|
|
+project(hello)
|
|
|
|
|
|
-## Building SDL
|
|
|
+# set the output directory for built objects.
|
|
|
+# This makes sure that the dynamic library goes into the build directory automatically.
|
|
|
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
|
|
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
|
|
|
|
|
-Once you have a command line interface with the Emscripten SDK set up and you've changed directory to the SDL directory, you can build SDL like this:
|
|
|
+# This assumes the SDL source is available in vendored/SDL
|
|
|
+add_subdirectory(vendored/SDL EXCLUDE_FROM_ALL)
|
|
|
|
|
|
-```sh
|
|
|
-mkdir hello
|
|
|
-cd hello
|
|
|
-emcmake cmake ..
|
|
|
-emmake make
|
|
|
-```
|
|
|
+# on Web targets, we need CMake to generate a HTML webpage.
|
|
|
+if(EMSCRIPTEN)
|
|
|
+ set(CMAKE_EXECUTABLE_SUFFIX ".html" CACHE INTERNAL "")
|
|
|
+endif()
|
|
|
|
|
|
-## Building your app
|
|
|
+# Create your game executable target as usual
|
|
|
+add_executable(hello WIN32 hello.c)
|
|
|
|
|
|
-In this case we'll just run a simple command to compile our source with the SDL library we just built:
|
|
|
-```sh
|
|
|
-emcc -o index.html ../docs/hello.c -I../include -L. -lSDL3
|
|
|
+# Link to the actual SDL3 library.
|
|
|
+target_link_libraries(hello PRIVATE SDL3::SDL3)
|
|
|
```
|
|
|
|
|
|
-## Running your app
|
|
|
-
|
|
|
-You can now run your app by pointing a webserver at your build directory and connecting a web browser to it.
|
|
|
+```sh
|
|
|
+emcmake cmake -S . -B build
|
|
|
+cd build
|
|
|
+emmake make
|
|
|
+```
|
|
|
|
|
|
-## More information
|
|
|
+You can now run your app by pointing a webserver at your build directory and connecting a web browser to it, opening hello.html.
|
|
|
|
|
|
A more complete example is available at:
|
|
|
|