From 35fb0bb8c09cfc5fd75ad87fac58799e5054b7ce Mon Sep 17 00:00:00 2001 From: Nils Gladitz Date: Tue, 28 Jul 2015 14:02:47 +0200 Subject: [PATCH] Ninja: Make import libraries BYPRODUCTs instead of regular OUTPUTs The MSVC linker may update a binary without touching the associated import library. Making the import library a BYPRODUCT prevents the linker from unnecessarily rerunning when the import library does not get regenerated as previously expected. --- Source/cmNinjaNormalTargetGenerator.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index 88da09bab..aabf18cb6 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -546,6 +546,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() } } + cmNinjaDeps byproducts; + if (!this->TargetNameImport.empty()) { const std::string impLibPath = localGen.ConvertToOutputFormat( @@ -555,7 +557,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() EnsureParentDirectoryExists(impLibPath); if(target.HasImportLibrary()) { - outputs.push_back(targetOutputImplib); + byproducts.push_back(targetOutputImplib); } } @@ -601,7 +603,6 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() &postBuildCmdLines }; - cmNinjaDeps byproducts; for (unsigned i = 0; i != 3; ++i) { for (std::vector::const_iterator