compilerconfig.cmake 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. # OBS CMake Windows compiler configuration module
  2. include_guard(GLOBAL)
  3. include(ccache)
  4. include(compiler_common)
  5. if(ENABLE_CCACHE AND CCACHE_PROGRAM)
  6. if(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
  7. file(COPY_FILE ${CCACHE_PROGRAM} "${CMAKE_CURRENT_BINARY_DIR}/cl.exe")
  8. set(CMAKE_VS_GLOBALS "CLToolExe=cl.exe" "CLToolPath=${CMAKE_BINARY_DIR}" "TrackFileAccess=false"
  9. "UseMultiToolTask=true")
  10. set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
  11. elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
  12. file(COPY_FILE ${CCACHE_PROGRAM} "${CMAKE_CURRENT_BINARY_DIR}/clang-cl.exe")
  13. set(CMAKE_VS_GLOBALS "CLToolExe=clang-cl.exe" "CLToolPath=${CMAKE_BINARY_DIR}" "TrackFileAccess=false"
  14. "UseMultiToolTask=true")
  15. endif()
  16. endif()
  17. # CMake 3.24 introduces a bug mistakenly interpreting MSVC as supporting the '-pthread' compiler flag
  18. if(CMAKE_VERSION VERSION_EQUAL 3.24.0)
  19. set(THREADS_HAVE_PTHREAD_ARG FALSE)
  20. endif()
  21. message(DEBUG "Current Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}")
  22. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM)
  23. message(DEBUG "Maximum Windows API version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM}")
  24. endif()
  25. if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS 10.0.20348)
  26. message(FATAL_ERROR "OBS requires Windows SDK version 10.0.20348.0 or more recent.\n"
  27. "Please download and install the most recent Windows SDK.")
  28. endif()
  29. add_compile_options(
  30. /W3 /utf-8 "$<$<COMPILE_LANG_AND_ID:C,MSVC>:/MP>" "$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/MP>"
  31. "$<$<COMPILE_LANG_AND_ID:C,Clang>:${_obs_clang_c_options}>"
  32. "$<$<COMPILE_LANG_AND_ID:CXX,Clang>:${_obs_clang_cxx_options}>")
  33. add_compile_definitions(UNICODE _UNICODE _CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_WARNINGS $<$<CONFIG:DEBUG>:DEBUG>
  34. $<$<CONFIG:DEBUG>:_DEBUG>)
  35. add_link_options("$<$<NOT:$<CONFIG:Debug>>:/OPT\:REF>" "$<$<CONFIG:Debug>:/INCREMENTAL\:NO>"
  36. "$<$<CONFIG:RelWithDebInfo>:/INCREMENTAL\:NO>" "$<$<CONFIG:RelWithDebInfo>:/OPT\:ICF>")
  37. if(CMAKE_COMPILE_WARNING_AS_ERROR)
  38. add_link_options(/WX)
  39. endif()