minor cmake improvements on windows
diff --git a/docs/cmake.rst b/docs/cmake.rst
index 7236ea8..0298303 100644
--- a/docs/cmake.rst
+++ b/docs/cmake.rst
@@ -106,17 +106,19 @@
if (WIN32)
if (MSVC)
- # /bigobj is needed for bigger binding projects due to the limit to 64k
- # addressable sections. /MP enables multithreaded builds (relevant when
- # there are many files).
- set_target_properties(example PROPERTIES COMPILE_FLAGS "/MP /bigobj ")
-
- if (NOT ${U_CMAKE_BUILD_TYPE} MATCHES DEBUG)
- # Enforce size-based optimization and link time code generation on MSVC
- # (~30% smaller binaries in experiments).
- set_target_properties(example APPEND_STRING PROPERTY COMPILE_FLAGS "/Os /GL ")
- set_target_properties(example APPEND_STRING PROPERTY LINK_FLAGS "/LTCG ")
- endif()
+ # /MP enables multithreaded builds (relevant when there are many files), /bigobj is
+ # needed for bigger binding projects due to the limit to 64k addressable sections
+ set_property(TARGET example APPEND PROPERTY COMPILE_OPTIONS /MP /bigobj)
+ # Enforce size-based optimization and link time code generation on MSVC
+ # (~30% smaller binaries in experiments); do nothing in debug mode.
+ set_property(TARGET example APPEND PROPERTY COMPILE_OPTIONS
+ "$<$<CONFIG:Release>:/Os>" "$<$<CONFIG:Release>:/GL>"
+ "$<$<CONFIG:MinSizeRel>:/Os>" "$<$<CONFIG:MinSizeRel>:/GL>"
+ "$<$<CONFIG:RelWithDebInfo>:/Os>" "$<$<CONFIG:RelWithDebInfo>:/GL>"
+ )
+ set_property(TARGET example APPEND_STRING PROPERTY LINK_FLAGS_RELEASE "/LTCG ")
+ set_property(TARGET example APPEND_STRING PROPERTY LINK_FLAGS_MINSIZEREL "/LTCG ")
+ set_property(TARGET example APPEND_STRING PROPERTY LINK_FLAGS_RELWITHDEBINFO "/LTCG ")
endif()
# .PYD file extension on Windows