aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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})