compilerconfig.cmake 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # CMake Windows compiler configuration module
  2. include_guard(GLOBAL)
  3. include(compiler_common)
  4. # CMake 3.24 introduces a bug mistakenly interpreting MSVC as supporting the '-pthread' compiler flag
  5. if(CMAKE_VERSION VERSION_EQUAL 3.24.0)
  6. set(THREADS_HAVE_PTHREAD_ARG FALSE)
  7. endif()
  8. # CMake 3.25 changed the way symbol generation is handled on Windows
  9. if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.25.0)
  10. if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
  11. set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT ProgramDatabase)
  12. else()
  13. set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
  14. endif()
  15. endif()
  16. message(DEBUG "Current Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
  17. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM)
  18. message(DEBUG "Maximum Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM}")
  19. endif()
  20. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS 10.0.20348)
  21. message(FATAL_ERROR "OBS requires Windows 10 SDK version 10.0.20348.0 or more recent.\n"
  22. "Please download and install the most recent Windows platform SDK.")
  23. endif()
  24. add_compile_options(
  25. /W3
  26. /utf-8
  27. "$<$<COMPILE_LANG_AND_ID:C,MSVC>:/MP>"
  28. "$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/MP>"
  29. "$<$<COMPILE_LANG_AND_ID:C,Clang>:${_obs_clang_c_options}>"
  30. "$<$<COMPILE_LANG_AND_ID:CXX,Clang>:${_obs_clang_cxx_options}>"
  31. $<$<NOT:$<CONFIG:Debug>>:/Gy>)
  32. add_compile_definitions(UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS $<$<CONFIG:DEBUG>:DEBUG>
  33. $<$<CONFIG:DEBUG>:_DEBUG>)
  34. # cmake-format: off
  35. add_link_options($<$<NOT:$<CONFIG:Debug>>:/OPT:REF>
  36. $<$<NOT:$<CONFIG:Debug>>:/OPT:ICF>
  37. $<$<NOT:$<CONFIG:Debug>>:/INCREMENTAL:NO>
  38. /DEBUG
  39. /Brepro)
  40. # cmake-format: on
  41. if(CMAKE_COMPILE_WARNING_AS_ERROR)
  42. add_link_options(/WX)
  43. endif()