os-windows.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. if(NOT TARGET OBS::blake2)
  2. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/blake2" "${CMAKE_BINARY_DIR}/deps/blake2")
  3. endif()
  4. if(NOT TARGET OBS::w32-pthreads)
  5. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/w32-pthreads" "${CMAKE_BINARY_DIR}/deps/w32-pthreads")
  6. endif()
  7. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
  8. find_package(MbedTLS REQUIRED)
  9. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG FALSE)
  10. find_package(Detours REQUIRED)
  11. find_package(nlohmann_json 3.11 REQUIRED)
  12. configure_file(cmake/windows/obs.rc.in obs.rc)
  13. target_sources(
  14. obs-studio
  15. PRIVATE
  16. cmake/windows/obs.manifest
  17. dialogs/OBSUpdate.cpp
  18. dialogs/OBSUpdate.hpp
  19. forms/OBSUpdate.ui
  20. obs.rc
  21. utility/AutoUpdateThread.cpp
  22. utility/AutoUpdateThread.hpp
  23. utility/CrashHandler_Windows.cpp
  24. utility/crypto-helpers-mbedtls.cpp
  25. utility/crypto-helpers.hpp
  26. utility/models/branches.hpp
  27. utility/models/whatsnew.hpp
  28. utility/platform-windows.cpp
  29. utility/system-info-windows.cpp
  30. utility/update-helpers.cpp
  31. utility/update-helpers.hpp
  32. utility/WhatsNewBrowserInitThread.cpp
  33. utility/WhatsNewBrowserInitThread.hpp
  34. utility/WhatsNewInfoThread.cpp
  35. utility/WhatsNewInfoThread.hpp
  36. utility/win-dll-blocklist.c
  37. )
  38. add_library(obs-updater-manifest INTERFACE)
  39. add_library(OBS::updater-manifest ALIAS obs-updater-manifest)
  40. target_sources(obs-updater-manifest INTERFACE updater/manifest.hpp)
  41. target_link_libraries(
  42. obs-studio
  43. PRIVATE
  44. crypt32
  45. OBS::blake2
  46. OBS::updater-manifest
  47. OBS::w32-pthreads
  48. MbedTLS::mbedtls
  49. nlohmann_json::nlohmann_json
  50. Detours::Detours
  51. )
  52. target_compile_definitions(obs-studio PRIVATE PSAPI_VERSION=2)
  53. target_link_options(obs-studio PRIVATE /IGNORE:4099 $<$<CONFIG:DEBUG>:/NODEFAULTLIB:MSVCRT>)
  54. # Set commit for untagged version comparisons in the Windows updater
  55. if(OBS_VERSION MATCHES ".+g[a-f0-9]+.*")
  56. string(REGEX REPLACE ".+g([a-f0-9]+).*$" "\\1" OBS_COMMIT ${OBS_VERSION})
  57. else()
  58. set(OBS_COMMIT "")
  59. endif()
  60. set_source_files_properties(utility/AutoUpdateThread.cpp PROPERTIES COMPILE_DEFINITIONS OBS_COMMIT="${OBS_COMMIT}")
  61. add_subdirectory(updater)
  62. set_property(TARGET obs-studio APPEND PROPERTY AUTORCC_OPTIONS --format-version 1)
  63. set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT obs-studio)
  64. set_target_properties(
  65. obs-studio
  66. PROPERTIES
  67. WIN32_EXECUTABLE TRUE
  68. VS_DEBUGGER_COMMAND "${CMAKE_BINARY_DIR}/rundir/$<CONFIG>/bin/64bit/$<TARGET_FILE_NAME:obs-studio>"
  69. VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/rundir/$<CONFIG>/bin/64bit"
  70. )