浏览代码

cmake: install pdb's when present

Anonymous Maarten 1 年之前
父节点
当前提交
90255914a8
共有 3 个文件被更改,包括 14 次插入1 次删除
  1. 6 1
      .github/workflows/msvc.yml
  2. 3 0
      CMakeLists.txt
  3. 5 0
      test/CMakeLists.txt

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

@@ -34,7 +34,12 @@ jobs:
         os.makedirs(builddir)
         with open(f"{ builddir }/CMakeLists.txt", "w") as f:
           f.write(textwrap.dedent(f"""\
-            cmake_minimum_required(VERSION 3.0...3.5)
+            # 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)
             add_subdirectory("{ srcdir }" SDL)
           """))

+ 3 - 0
CMakeLists.txt

@@ -3507,6 +3507,9 @@ if(NOT SDL2_DISABLE_INSTALL)
       LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
       ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
       RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+    if(MSVC AND NOT CMAKE_VERSION VERSION_LESS "3.1")
+      install(FILES $<TARGET_PDB_FILE:SDL2> DESTINATION "${CMAKE_INSTALL_BINDIR}" OPTIONAL)
+    endif()
   endif()
 
   if(NOT WINDOWS_STORE AND NOT SDL2_DISABLE_SDL2MAIN)

+ 5 - 0
test/CMakeLists.txt

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