diff --git a/Source/cmCableCommand.cxx b/Source/cmCableCommand.cxx index df6b6e323..3f4be4efe 100644 --- a/Source/cmCableCommand.cxx +++ b/Source/cmCableCommand.cxx @@ -64,11 +64,18 @@ void cmCableCommand::SetupCableData() if(m_CableData) { return; } } - + + // We must make sure the output directory exists so that the CABLE + // configuration file can be opened by the cmCableData. + std::string pathName = m_Makefile->GetStartOutputDirectory(); + if(!cmSystemTools::MakeDirectory(pathName.c_str())) + { + cmSystemTools::Error("Unable to make directory ", pathName.c_str()); + } + // We didn't find another cmCableCommand with a valid cmCableData. // We must allocate the new cmCableData ourselves, and with this // command as its owner. - std::string pathName = m_Makefile->GetStartOutputDirectory(); pathName += "/cable_config.xml"; m_CableData = new cmCableData(this, pathName); } diff --git a/Source/cmCableData.cxx b/Source/cmCableData.cxx index 7fadb41a4..618a70891 100644 --- a/Source/cmCableData.cxx +++ b/Source/cmCableData.cxx @@ -59,6 +59,10 @@ void cmCableData::OpenOutputFile(const std::string& name) { this->WriteConfigurationHeader(); } + else + { + cmSystemTools::Error("Unable to open CABLE config file: ", name.c_str()); + } }