Server mode: Fix regression of hasInstallRule

The introduction of policy CMP0082, to run subdirectory install
rules in the correct order, caused a regression in server mode
where any directory with a subdirectory is marked as having an
install rule even if no "real" install rules are present. This
change fixes this regression for server mode.
This commit is contained in:
Kyle Edwards 2018-12-12 10:29:50 -05:00
parent 6a6900f616
commit c150bf087c

View File

@ -6,6 +6,7 @@
#include "cmGeneratorTarget.h"
#include "cmGlobalGenerator.h"
#include "cmInstallGenerator.h"
#include "cmInstallSubdirectoryGenerator.h"
#include "cmInstallTargetGenerator.h"
#include "cmJsonObjectDictionary.h"
#include "cmJsonObjects.h"
@ -640,8 +641,13 @@ static Json::Value DumpProjectList(const cmake* cm, std::string const& config)
// associated generators.
bool hasInstallRule = false;
for (const auto generator : projectIt.second) {
hasInstallRule =
generator->GetMakefile()->GetInstallGenerators().empty() == false;
for (const auto installGen :
generator->GetMakefile()->GetInstallGenerators()) {
if (!dynamic_cast<cmInstallSubdirectoryGenerator*>(installGen)) {
hasInstallRule = true;
break;
}
}
if (hasInstallRule) {
break;