|
@@ -363,114 +363,3 @@ However, by default CMake builds static libraries as non-relocatable.
|
|
|
Configuring SDL with `-DCMAKE_POSITION_INDEPENDENT_CODE=ON` will result in a static `libSDL3.a` library
|
|
|
which you can link against to create a shared library.
|
|
|
|
|
|
-## Help, it doesn't work!
|
|
|
-
|
|
|
-Below, a SDL3 CMake project can be found that builds 99.9% of time (assuming you have internet connectivity).
|
|
|
-When you have a problem with building or using SDL, please modify it until it reproduces your issue.
|
|
|
-
|
|
|
-```cmake
|
|
|
-cmake_minimum_required(VERSION 3.16)
|
|
|
-project(sdl_issue)
|
|
|
-
|
|
|
-# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
-# !!!!!! !!!!!!
|
|
|
-# !!!!!! This CMake script is not using "CMake best practices". !!!!!!
|
|
|
-# !!!!!! Don't use it in your project. !!!!!!
|
|
|
-# !!!!!! !!!!!!
|
|
|
-# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
-
|
|
|
-# 1. Try system SDL3 package first
|
|
|
-find_package(SDL3 QUIET)
|
|
|
-if(SDL3_FOUND)
|
|
|
- message(STATUS "Using SDL3 via find_package")
|
|
|
-endif()
|
|
|
-
|
|
|
-# 2. Try using a vendored SDL library
|
|
|
-if(NOT SDL3_FOUND AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL/CMakeLists.txt")
|
|
|
- add_subdirectory(SDL EXCLUDE_FROM_ALL)
|
|
|
- message(STATUS "Using SDL3 via add_subdirectory")
|
|
|
- set(SDL3_FOUND TRUE)
|
|
|
-endif()
|
|
|
-
|
|
|
-# 3. Download SDL, and use that.
|
|
|
-if(NOT SDL3_FOUND)
|
|
|
- include(FetchContent)
|
|
|
- set(SDL_SHARED TRUE CACHE BOOL "Build a SDL shared library (if available)")
|
|
|
- set(SDL_STATIC TRUE CACHE BOOL "Build a SDL static library (if available)")
|
|
|
- FetchContent_Declare(
|
|
|
- SDL
|
|
|
- GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
|
|
|
- GIT_TAG main # Replace this with a particular git tag or git hash
|
|
|
- GIT_SHALLOW TRUE
|
|
|
- GIT_PROGRESS TRUE
|
|
|
- )
|
|
|
- message(STATUS "Using SDL3 via FetchContent")
|
|
|
- FetchContent_MakeAvailable(SDL)
|
|
|
- set_property(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_deps/sdl-src" PROPERTY EXCLUDE_FROM_ALL TRUE)
|
|
|
-endif()
|
|
|
-
|
|
|
-file(WRITE main.c [===========================================[
|
|
|
-/**
|
|
|
- * Modify this source such that it reproduces your problem.
|
|
|
- */
|
|
|
-
|
|
|
-/* START of source modifications */
|
|
|
-
|
|
|
-#include <SDL3/SDL.h>
|
|
|
-/*
|
|
|
- * SDL3/SDL_main.h is explicitly not included such that a terminal window would appear on Windows.
|
|
|
- */
|
|
|
-
|
|
|
-int main(int argc, char *argv[]) {
|
|
|
- (void)argc;
|
|
|
- (void)argv;
|
|
|
-
|
|
|
- if (!SDL_Init(SDL_INIT_VIDEO)) {
|
|
|
- SDL_Log("SDL_Init failed (%s)", SDL_GetError());
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
- SDL_Window *window = NULL;
|
|
|
- SDL_Renderer *renderer = NULL;
|
|
|
-
|
|
|
- if (!SDL_CreateWindowAndRenderer("SDL issue", 640, 480, 0, &window, &renderer)) {
|
|
|
- SDL_Log("SDL_CreateWindowAndRenderer failed (%s)", SDL_GetError());
|
|
|
- SDL_Quit();
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
- while (1) {
|
|
|
- int finished = 0;
|
|
|
- SDL_Event event;
|
|
|
- while (SDL_PollEvent(&event)) {
|
|
|
- if (event.type == SDL_EVENT_QUIT) {
|
|
|
- finished = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (finished) {
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- SDL_SetRenderDrawColor(renderer, 80, 80, 80, SDL_ALPHA_OPAQUE);
|
|
|
- SDL_RenderClear(renderer);
|
|
|
- SDL_RenderPresent(renderer);
|
|
|
- }
|
|
|
-
|
|
|
- SDL_DestroyRenderer(renderer);
|
|
|
- SDL_DestroyWindow(window);
|
|
|
-
|
|
|
- SDL_Quit();
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/* END of source modifications */
|
|
|
-
|
|
|
-]===========================================])
|
|
|
-
|
|
|
-add_executable(sdl_issue main.c)
|
|
|
-
|
|
|
-target_link_libraries(sdl_issue PRIVATE SDL3::SDL3)
|
|
|
-# target_link_libraries(sdl_issue PRIVATE SDL3::SDL3-shared)
|
|
|
-# target_link_libraries(sdl_issue PRIVATE SDL3::SDL3-static)
|
|
|
-```
|