Commit 518cf721 authored by Wenzel Jakob's avatar Wenzel Jakob
Browse files

improve cmake windows debug configuration (fixes #77)

parent fa92f679
...@@ -129,12 +129,17 @@ endforeach() ...@@ -129,12 +129,17 @@ endforeach()
if (WIN32) if (WIN32)
if (MSVC) if (MSVC)
# Enforce size-based optimization and link time code generation # /bigobj is needed for bigger binding projects due to the limit to 64k
# on MSVC (~30% smaller binaries in experiments). /bigobj is needed # addressable sections. /MP enables multithreaded builds (relevant when
# for bigger binding projects due to the limit to 64k addressable sections # there are many files).
# /MP enables multithreaded builds (relevant when there are many files). set_target_properties(example PROPERTIES COMPILE_FLAGS "/MP /bigobj ")
set_target_properties(example PROPERTIES COMPILE_FLAGS "/Os /GL /MP /bigobj")
set_target_properties(example PROPERTIES LINK_FLAGS "/LTCG") 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()
endif() endif()
# .PYD file extension on Windows # .PYD file extension on Windows
...@@ -151,7 +156,7 @@ elseif (UNIX) ...@@ -151,7 +156,7 @@ elseif (UNIX)
# conflicting Python instances are active at the same time (even when they # conflicting Python instances are active at the same time (even when they
# are of the same version). # are of the same version).
# Windows is not affected by this issue since it handles DLL imports # Windows is not affected by this issue since it handles DLL imports
# differently. The solution for Linux and Mac OS is simple: we just don't # differently. The solution for Linux and Mac OS is simple: we just don't
# link against the Python library. The resulting shared library will have # link against the Python library. The resulting shared library will have
# missing symbols, but that's perfectly fine -- they will be resolved at # missing symbols, but that's perfectly fine -- they will be resolved at
......
...@@ -84,12 +84,17 @@ and that the pybind11 repository is located in a subdirectory named :file:`pybin ...@@ -84,12 +84,17 @@ and that the pybind11 repository is located in a subdirectory named :file:`pybin
if (WIN32) if (WIN32)
if (MSVC) if (MSVC)
# Enforce size-based optimization and link time code generation # /bigobj is needed for bigger binding projects due to the limit to 64k
# on MSVC (~30% smaller binaries in experiments). /bigobj is needed # addressable sections. /MP enables multithreaded builds (relevant when
# for bigger binding projects due to the limit to 64k addressable sections # there are many files).
# /MP enables multithreaded builds (relevant when there are many files). set_target_properties(example PROPERTIES COMPILE_FLAGS "/MP /bigobj ")
set_target_properties(example PROPERTIES COMPILE_FLAGS "/Os /GL /MP /bigobj")
set_target_properties(example PROPERTIES LINK_FLAGS "/LTCG") 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()
endif() endif()
# .PYD file extension on Windows # .PYD file extension on Windows
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment