mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Teach configure_file to handle relative paths
The configure_file() command now converts relative output paths to full paths using the current binary directory. Input relative paths were already converted using the current source directory, but this behavior was not previously documented.
This commit is contained in:
@@ -27,8 +27,23 @@ bool cmConfigureFileCommand
|
||||
this->SetError("called with incorrect number of arguments, expected 2");
|
||||
return false;
|
||||
}
|
||||
this->InputFile = args[0];
|
||||
this->OutputFile = args[1];
|
||||
|
||||
const char* inFile = args[0].c_str();
|
||||
if(!cmSystemTools::FileIsFullPath(inFile))
|
||||
{
|
||||
this->InputFile = this->Makefile->GetCurrentDirectory();
|
||||
this->InputFile += "/";
|
||||
}
|
||||
this->InputFile += inFile;
|
||||
|
||||
const char* outFile = args[1].c_str();
|
||||
if(!cmSystemTools::FileIsFullPath(outFile))
|
||||
{
|
||||
this->OutputFile = this->Makefile->GetCurrentOutputDirectory();
|
||||
this->OutputFile += "/";
|
||||
}
|
||||
this->OutputFile += outFile;
|
||||
|
||||
if ( !this->Makefile->CanIWriteThisFile(this->OutputFile.c_str()) )
|
||||
{
|
||||
std::string e = "attempted to configure a file: " + this->OutputFile
|
||||
@@ -89,14 +104,8 @@ void cmConfigureFileCommand::FinalPass()
|
||||
|
||||
int cmConfigureFileCommand::ConfigureFile()
|
||||
{
|
||||
std::string inFile = this->InputFile;
|
||||
if (!cmSystemTools::FileIsFullPath(inFile.c_str()))
|
||||
{
|
||||
inFile = this->Makefile->GetStartDirectory();
|
||||
inFile += "/";
|
||||
inFile += this->InputFile;
|
||||
}
|
||||
return this->Makefile->ConfigureFile(inFile.c_str(),
|
||||
return this->Makefile->ConfigureFile(
|
||||
this->InputFile.c_str(),
|
||||
this->OutputFile.c_str(),
|
||||
this->CopyOnly,
|
||||
this->AtOnly,
|
||||
|
||||
Reference in New Issue
Block a user