os-windows.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. if(NOT TARGET OBS::obfuscate)
  2. add_library(obs-obfuscate INTERFACE)
  3. add_library(OBS::obfuscate ALIAS obs-obfuscate)
  4. target_sources(obs-obfuscate INTERFACE util/windows/obfuscate.c util/windows/obfuscate.h)
  5. target_include_directories(obs-obfuscate INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
  6. endif()
  7. if(NOT TARGET OBS::comutils)
  8. add_library(obs-comutils INTERFACE)
  9. add_library(OBS::COMutils ALIAS obs-comutils)
  10. target_sources(obs-comutils INTERFACE util/windows/ComPtr.hpp)
  11. target_include_directories(obs-comutils INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
  12. endif()
  13. if(NOT TARGET OBS::winhandle)
  14. add_library(obs-winhandle INTERFACE)
  15. add_library(OBS::winhandle ALIAS obs-winhandle)
  16. target_sources(obs-winhandle INTERFACE util/windows/WinHandle.hpp)
  17. target_include_directories(obs-winhandle INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
  18. endif()
  19. if(NOT TARGET OBS::threading-windows)
  20. add_library(obs-threading-windows INTERFACE)
  21. add_library(OBS::threading-windows ALIAS obs-threading-windows)
  22. target_sources(obs-threading-windows INTERFACE util/threading-windows.h)
  23. target_include_directories(obs-threading-windows INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
  24. endif()
  25. if(NOT TARGET OBS::w32-pthreads)
  26. add_subdirectory("${CMAKE_SOURCE_DIR}/deps/w32-pthreads" "${CMAKE_BINARY_DIR}/deps/w32-pthreads")
  27. endif()
  28. if(NOT OBS_PARENT_ARCHITECTURE STREQUAL CMAKE_VS_PLATFORM_NAME)
  29. return()
  30. endif()
  31. configure_file(cmake/windows/obs-module.rc.in libobs.rc)
  32. target_sources(
  33. libobs
  34. PRIVATE
  35. audio-monitoring/win32/wasapi-enum-devices.c
  36. audio-monitoring/win32/wasapi-monitoring-available.c
  37. audio-monitoring/win32/wasapi-output.c
  38. audio-monitoring/win32/wasapi-output.h
  39. libobs.rc
  40. obs-win-crash-handler.c
  41. obs-windows.c
  42. util/pipe-windows.c
  43. util/platform-windows.c
  44. util/threading-windows.c
  45. util/threading-windows.h
  46. util/windows/CoTaskMemPtr.hpp
  47. util/windows/device-enum.c
  48. util/windows/device-enum.h
  49. util/windows/HRError.hpp
  50. util/windows/win-registry.h
  51. util/windows/win-version.h
  52. util/windows/window-helpers.c
  53. util/windows/window-helpers.h
  54. )
  55. target_compile_options(libobs PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:/EHc->)
  56. set_source_files_properties(
  57. obs-win-crash-handler.c
  58. PROPERTIES COMPILE_DEFINITIONS OBS_VERSION="${OBS_VERSION_CANONICAL}"
  59. )
  60. target_link_libraries(
  61. libobs
  62. PRIVATE Avrt Dwmapi Dxgi winmm Rpcrt4 OBS::obfuscate OBS::winhandle OBS::COMutils
  63. PUBLIC OBS::w32-pthreads
  64. )
  65. target_link_options(libobs PRIVATE /IGNORE:4098 /SAFESEH:NO)
  66. set_target_properties(libobs PROPERTIES PREFIX "" OUTPUT_NAME "obs")