diff --git a/Source/cmSubdirCommand.cxx b/Source/cmSubdirCommand.cxx index 7651c2a91af123d91ce6ec30bd594466bff291aa..10bb9160858256a1e3c79ef44ccf58215e09b99b 100644 --- a/Source/cmSubdirCommand.cxx +++ b/Source/cmSubdirCommand.cxx @@ -26,12 +26,25 @@ bool cmSubdirCommand::InitialPass(std::vector<std::string> const& argsIn) } std::vector<std::string> args; cmSystemTools::ExpandListArguments(argsIn, args); + bool res = true; for(std::vector<std::string>::const_iterator i = args.begin(); i != args.end(); ++i) { - m_Makefile->AddSubDirectory(i->c_str()); + std::string directory = std::string(m_Makefile->GetCurrentDirectory()) + + "/" + i->c_str(); + if ( cmSystemTools::FileIsDirectory(directory.c_str()) ) + { + m_Makefile->AddSubDirectory(i->c_str()); + } + else + { + std::string error = "Incorrect SUBDIRS command. Directory: "; + error += directory + " does not exists."; + this->SetError(error.c_str()); + res = false; + } } - return true; + return res; }