Fix for bug #11927, external project git clone step always runs vs10.
In cmMakefile.cxx GetCMakeCFGInitDirectory is replaced with GetCMakeFilesDirectory for .rule files. In some cases with external projects, that directory will not exist. With vs10 the .rule files must exist or the rule will run with every build. This fix creates the path that the .rule file is in. In addition, it is now a CMake error if the .rule file can not be created.
This commit is contained in:
parent
08b109a87f
commit
9d406cdb65
|
@ -351,6 +351,9 @@ cmVisualStudio10TargetGenerator::WriteCustomRule(cmSourceFile* source,
|
||||||
{
|
{
|
||||||
if(!cmSystemTools::FileExists(sourcePath.c_str()))
|
if(!cmSystemTools::FileExists(sourcePath.c_str()))
|
||||||
{
|
{
|
||||||
|
// Make sure the path exists for the file
|
||||||
|
std::string path = cmSystemTools::GetFilenamePath(sourcePath);
|
||||||
|
cmSystemTools::MakeDirectory(path.c_str());
|
||||||
std::ofstream fout(sourcePath.c_str());
|
std::ofstream fout(sourcePath.c_str());
|
||||||
if(fout)
|
if(fout)
|
||||||
{
|
{
|
||||||
|
@ -358,6 +361,14 @@ cmVisualStudio10TargetGenerator::WriteCustomRule(cmSourceFile* source,
|
||||||
fout.flush();
|
fout.flush();
|
||||||
fout.close();
|
fout.close();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::string error = "Could not create file: [";
|
||||||
|
error += sourcePath;
|
||||||
|
error += "] ";
|
||||||
|
cmSystemTools::Error
|
||||||
|
(error.c_str(), cmSystemTools::GetLastSystemError().c_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmLocalVisualStudio7Generator* lg = this->LocalGenerator;
|
cmLocalVisualStudio7Generator* lg = this->LocalGenerator;
|
||||||
|
|
Loading…
Reference in New Issue