Bladeren bron

cmake: optionally install pdb's

Anonymous Maarten 1 jaar geleden
bovenliggende
commit
1ae33f6751
3 gewijzigde bestanden met toevoegingen van 21 en 6 verwijderingen
  1. 13 6
      .github/workflows/msvc.yml
  2. 3 0
      CMakeLists.txt
  3. 5 0
      test/CMakeLists.txt

+ 13 - 6
.github/workflows/msvc.yml

@@ -36,13 +36,20 @@ jobs:
         srcdir = r"${{ github.workspace }}".replace("\\", "/")
         builddir = f"{ srcdir }/build"
         os.makedirs(builddir)
+        cmakelists_txt = textwrap.dedent(f"""\
+          # Always build .PDB symbol file
+          set(CMAKE_POLICY_DEFAULT_CMP0141 "NEW" CACHE STRING "MSVC debug information format flags are selected by an abstraction")
+          set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "ProgramDatabase" CACHE STRING "MSVC debug information format")
+          set(CMAKE_EXE_LINKER_FLAGS "-DEBUG" CACHE STRING "Linker flags for executables")
+          set(CMAKE_SHARED_LINKER_FLAGS "-DEBUG" CACHE STRING "Linker flag for shared libraries")
+          cmake_minimum_required(VERSION 3.0...3.25)
+          project(sdl_user)
+          enable_testing()
+          add_subdirectory("{ srcdir }" SDL)
+        """)
+        print(cmakelists_txt)
         with open(f"{ builddir }/CMakeLists.txt", "w") as f:
-          f.write(textwrap.dedent(f"""\
-            cmake_minimum_required(VERSION 3.0...3.25)
-            project(sdl_user)
-            enable_testing()
-            add_subdirectory("{ srcdir }" SDL)
-          """))
+          f.write(cmakelists_txt)
     - name: Configure (CMake)
       run: cmake -S build -B build `
         -Wdeprecated -Wdev -Werror `

+ 3 - 0
CMakeLists.txt

@@ -3264,6 +3264,9 @@ if(NOT SDL_DISABLE_INSTALL)
       FRAMEWORK DESTINATION "."
       RESOURCE DESTINATION "${SDL_SDL_INSTALL_RESOURCEDIR}"
     )
+    if(MSVC)
+      install(FILES $<TARGET_PDB_FILE:SDL3-shared> DESTINATION "${CMAKE_INSTALL_BINDIR}" OPTIONAL)
+    endif()
   endif()
 
   if(SDL_STATIC)

+ 5 - 0
test/CMakeLists.txt

@@ -557,6 +557,11 @@ if(SDL_INSTALL_TESTS)
             DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3
         )
     endif()
+    if(MSVC)
+        foreach(test IN LISTS SDL_TEST_EXECUTABLES)
+            install(FILES $<TARGET_PDB_FILE:${test}> DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3" OPTIONAL)
+        endforeach()
+    endif()
     install(
         FILES ${RESOURCE_FILES}
         DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3