diff options
author | Fujii Hironori <fujii.hironori@gmail.com> | 2018-03-23 06:44:42 (GMT) |
---|---|---|
committer | Fujii Hironori <fujii.hironori@gmail.com> | 2018-04-23 04:31:28 (GMT) |
commit | f59c33a763ba1483129f0e721bc2394bb7442876 (patch) | |
tree | 3ff8c37758ffbe7faebe1e77ec9608e4d619775b /Tests/RunCMake/add_custom_command/RunCMakeTest.cmake | |
parent | d58d4daa6b2e36c6e2318e4d67271542dca79ee6 (diff) | |
download | CMake-f59c33a763ba1483129f0e721bc2394bb7442876.zip CMake-f59c33a763ba1483129f0e721bc2394bb7442876.tar.gz CMake-f59c33a763ba1483129f0e721bc2394bb7442876.tar.bz2 |
VS: Generate a custom command only in the least dependent target
If a custom command is assigned to multiple targets, generate the build
rule only in the least-dependent `.vcxproj` file. Otherwise MSBuild
will run the command on the first build of a dependent target even if
its dependencies already brought the command up to date (in order to
populates its build log).
Generate targets in least-to-most-dependent order, and assign a custom
command to the least dependent target.
Added cmLocalVisualStudio10Generator::GenerateTargetsDepthFirst to call
cmVisualStudio10TargetGenerator::Generate in least-dependent order.
Moved SourcesVisited from cmVisualStudio10TargetGenerator to
cmLocalVisualStudio10Generator to avoid attaching a custom command to
multiple targets among the local generator.
Fixes: #16767
Diffstat (limited to 'Tests/RunCMake/add_custom_command/RunCMakeTest.cmake')
-rw-r--r-- | Tests/RunCMake/add_custom_command/RunCMakeTest.cmake | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Tests/RunCMake/add_custom_command/RunCMakeTest.cmake b/Tests/RunCMake/add_custom_command/RunCMakeTest.cmake index c12e5aa..0387dbb 100644 --- a/Tests/RunCMake/add_custom_command/RunCMakeTest.cmake +++ b/Tests/RunCMake/add_custom_command/RunCMakeTest.cmake @@ -14,3 +14,10 @@ run_cmake(TargetNotInDir) if(${RunCMake_GENERATOR} MATCHES "Visual Studio ([^89]|[89][0-9])") run_cmake(RemoveEmptyCommands) endif() + +run_cmake(AssigningMultipleTargets) +set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AssigningMultipleTargets-build) +set(RunCMake_TEST_NO_CLEAN 1) +run_cmake_command(AssigningMultipleTargets-build ${CMAKE_COMMAND} --build .) +unset(RunCMake_TEST_BINARY_DIR) +unset(RunCMake_TEST_NO_CLEAN) |