aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-06-02 21:09:53 +0200
committerShauren <shauren.trinity@gmail.com>2019-06-02 21:09:53 +0200
commit9b1dfe5e5e968c6ee3a2682ae2106735daeccbd7 (patch)
tree07cd6089adc7a636eca20f7677e30e0f614eee7d
parent345133d75ea72b5361835e25fd4b10a8ae4fe3da (diff)
Build: Fixed VS always triggering a full build when PCH is enabled, even if only a source file was edited
-rw-r--r--dep/cotire/CMake/cotire.cmake14
1 files changed, 12 insertions, 2 deletions
diff --git a/dep/cotire/CMake/cotire.cmake b/dep/cotire/CMake/cotire.cmake
index 62cd23db987..b2c2d391142 100644
--- a/dep/cotire/CMake/cotire.cmake
+++ b/dep/cotire/CMake/cotire.cmake
@@ -2867,8 +2867,18 @@ function (cotire_process_target_language _language _configurations _target _whol
# check for user provided prefix header files
get_property(_prefixHeaderFiles TARGET ${_target} PROPERTY COTIRE_${_language}_PREFIX_HEADER_INIT)
if (_prefixHeaderFiles)
- cotire_setup_prefix_generation_from_provided_command(
- ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" _cmds ${_prefixHeaderFiles})
+ list (LENGTH _prefixHeaderFiles _numberOfprefixHeaderFiles)
+ # if there is only one header specified in COTIRE_${_language}_PREFIX_HEADER_INIT then use it directly
+ # this works around a bug/change that causes Visual Studio to always rebuild entire project
+ # even if only one source file changed
+ # custom commands in cmake are designed to be always "out of date" so generation always happens
+ # Visual Studio determines "out of date" status by last modification timestamp, not content
+ if (_numberOfprefixHeaderFiles GREATER 1)
+ cotire_setup_prefix_generation_from_provided_command(
+ ${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" _cmds ${_prefixHeaderFiles})
+ else()
+ list (GET _prefixHeaderFiles 0 _prefixFile)
+ endif()
else()
cotire_setup_prefix_generation_from_unity_command(
${_language} ${_target} "${_targetConfigScript}" "${_prefixFile}" "${_unityFile}" _cmds ${_unitySourceFiles})