Update doc/README-* for header-only SDL_main
This commit is contained in:
committed by
Sam Lantinga
parent
c3bf253b09
commit
ab554c8392
@@ -9,10 +9,6 @@ SDL headers should now be included as `#include <SDL3/SDL.h>`. Typically that's
|
||||
CMake users should use this snippet to include SDL support in their project:
|
||||
```
|
||||
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
|
||||
find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3_main)
|
||||
if(TARGET SDL3::SDL3_main)
|
||||
target_link_libraries(mygame PRIVATE SDL3::SDL3_main)
|
||||
endif()
|
||||
target_link_libraries(mygame PRIVATE SDL3::SDL3)
|
||||
```
|
||||
|
||||
@@ -28,7 +24,9 @@ CFLAGS += $(shell pkg-config sdl3 --cflags)
|
||||
LDFLAGS += $(shell pkg-config sdl3 --libs)
|
||||
```
|
||||
|
||||
The SDL3main and SDL3test libraries have been renamed SDL3_main and SDL3_test, respectively.
|
||||
The SDL3test library has been renamed SDL3_test.
|
||||
|
||||
There is no static SDLmain library anymore, it's now header-only, see below in the SDL_main.h section.
|
||||
|
||||
|
||||
## SDL_cpuinfo.h
|
||||
@@ -63,6 +61,34 @@ SDL_GetEventState used to be a macro, now it's a real function, but otherwise fu
|
||||
|
||||
Removed SDL_GameControllerGetSensorDataWithTimestamp(), if you want timestamps for the sensor data, you should use the sensor_timestamp member of SDL_CONTROLLERSENSORUPDATE events.
|
||||
|
||||
## SDL_main.h
|
||||
|
||||
SDL3 doesn't have a static libSDLmain to link against anymore.
|
||||
Instead SDL_main.h is now a header-only library **and not included by SDL.h anymore**.
|
||||
|
||||
Using it is really simple: Just `#include <SDL3/SDL_main.h>` in the source file with your standard
|
||||
`int main(int argc, char* argv[])` function.
|
||||
|
||||
The rest happens automatically: If your target platform needs the SDL_main functionality,
|
||||
your `main` function will be renamed to `SDL_main` (with a macro, just like in SDL2),
|
||||
and the real main-function will be implemented by inline code from SDL_main.h - and if your target
|
||||
platform doesn't need it, nothing happens.
|
||||
Like in SDL2, if you want to handle the platform-specific main yourself instead of using the SDL_main magic,
|
||||
you can `#define SDL_MAIN_HANDLED` before `#include <SDL3/SDL_main.h>` - don't forget to call `SDL_SetMainReady()`!
|
||||
|
||||
If you need SDL_main.h in another source file (that doesn't implement main()), you also need to
|
||||
`#define SDL_MAIN_HANDLED` there, to avoid that multiple main functions are generated by SDL_main.h
|
||||
|
||||
There is currently one platform where this approach doesn't always work: WinRT.
|
||||
It requires WinMain to be implemented in a C++ source file that's compiled with `/ZW`. If your main
|
||||
is implemented in plain C, or you can't use `/ZW` on that file, you can add another .cpp
|
||||
source file that just contains `#include <SDL3/SDL_main.h>` and compile that with `/ZW` - but keep
|
||||
in mind that the source file with your standard main also needs that include!
|
||||
See [README-winrt.md](./README-winrt.md) for more details.
|
||||
|
||||
Furthermore, the different `SDL_*RunApp()` functions (SDL_WinRtRunApp, SDL_GDKRunApp, SDL_UIKitRunApp)
|
||||
have been unified into just `int SDL_RunApp(int argc, char* argv[], void * reserved)` (which is also
|
||||
used by additional platforms that didn't have a SDL_RunApp-like function before).
|
||||
|
||||
## SDL_platform.h
|
||||
|
||||
|
||||
Reference in New Issue
Block a user