compilerconfig.cmake 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # CMake Windows compiler configuration module
  2. include_guard(GLOBAL)
  3. include(compiler_common)
  4. set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT ProgramDatabase)
  5. message(DEBUG "Current Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
  6. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM)
  7. message(DEBUG "Maximum Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM}")
  8. endif()
  9. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS 10.0.20348)
  10. message(
  11. FATAL_ERROR
  12. "OBS requires Windows 10 SDK version 10.0.20348.0 or more recent.\n"
  13. "Please download and install the most recent Windows platform SDK."
  14. )
  15. endif()
  16. set(_obs_msvc_c_options /MP /Zc:__cplusplus /Zc:preprocessor)
  17. set(_obs_msvc_cpp_options /MP /Zc:__cplusplus /Zc:preprocessor)
  18. if(CMAKE_CXX_STANDARD GREATER_EQUAL 20)
  19. list(APPEND _obs_msvc_cpp_options /Zc:char8_t-)
  20. endif()
  21. add_compile_options(
  22. /W3
  23. /utf-8
  24. /Brepro
  25. /permissive-
  26. "$<$<COMPILE_LANG_AND_ID:C,MSVC>:${_obs_msvc_c_options}>"
  27. "$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:${_obs_msvc_cpp_options}>"
  28. "$<$<COMPILE_LANG_AND_ID:C,Clang>:${_obs_clang_c_options}>"
  29. "$<$<COMPILE_LANG_AND_ID:CXX,Clang>:${_obs_clang_cxx_options}>"
  30. $<$<NOT:$<CONFIG:Debug>>:/Gy>
  31. $<$<NOT:$<CONFIG:Debug>>:/GL>
  32. $<$<NOT:$<CONFIG:Debug>>:/Oi>
  33. )
  34. add_compile_definitions(
  35. UNICODE
  36. _UNICODE
  37. _CRT_SECURE_NO_WARNINGS
  38. _CRT_NONSTDC_NO_WARNINGS
  39. $<$<CONFIG:DEBUG>:DEBUG>
  40. $<$<CONFIG:DEBUG>:_DEBUG>
  41. )
  42. add_link_options(
  43. $<$<NOT:$<CONFIG:Debug>>:/OPT:REF>
  44. $<$<NOT:$<CONFIG:Debug>>:/OPT:ICF>
  45. $<$<NOT:$<CONFIG:Debug>>:/LTCG>
  46. $<$<NOT:$<CONFIG:Debug>>:/INCREMENTAL:NO>
  47. /DEBUG
  48. /Brepro
  49. )
  50. if(CMAKE_COMPILE_WARNING_AS_ERROR)
  51. add_link_options(/WX)
  52. endif()