diff options
author | Brad King <brad.king@kitware.com> | 2017-06-09 14:36:23 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2017-06-09 14:36:30 (GMT) |
commit | 591557ba450f1f24610ea0eefcb4e1d7665fae25 (patch) | |
tree | 8f3e7d2655fe929f7acd25d30af299b5534d1b13 | |
parent | 20df0bcd7026b9209fb8c88052ad637e2559c74f (diff) | |
parent | c41a7c7d90e1fca52896dfeb99b7efd717aa6262 (diff) | |
download | CMake-591557ba450f1f24610ea0eefcb4e1d7665fae25.zip CMake-591557ba450f1f24610ea0eefcb4e1d7665fae25.tar.gz CMake-591557ba450f1f24610ea0eefcb4e1d7665fae25.tar.bz2 |
Merge topic 'file-generate-path-cleanup'
c41a7c7d file: Normalize GENERATE command input and output file paths
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !940
-rw-r--r-- | Source/cmGeneratorExpressionEvaluationFile.cxx | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Source/cmGeneratorExpressionEvaluationFile.cxx b/Source/cmGeneratorExpressionEvaluationFile.cxx index 1526454..c21e4f6 100644 --- a/Source/cmGeneratorExpressionEvaluationFile.cxx +++ b/Source/cmGeneratorExpressionEvaluationFile.cxx @@ -51,11 +51,15 @@ void cmGeneratorExpressionEvaluationFile::Generate( } } - const std::string outputFileName = this->OutputFileExpr->Evaluate( + std::string outputFileName = this->OutputFileExpr->Evaluate( lg, config, false, CM_NULLPTR, CM_NULLPTR, CM_NULLPTR, lang); const std::string outputContent = inputExpression->Evaluate( lg, config, false, CM_NULLPTR, CM_NULLPTR, CM_NULLPTR, lang); + if (cmSystemTools::FileIsFullPath(outputFileName)) { + outputFileName = cmSystemTools::CollapseFullPath(outputFileName); + } + std::map<std::string, std::string>::iterator it = outputFiles.find(outputFileName); @@ -111,12 +115,16 @@ void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator* lg) if (this->InputIsContent) { inputContent = this->Input; } else { - lg->GetMakefile()->AddCMakeDependFile(this->Input); - cmSystemTools::GetPermissions(this->Input.c_str(), perm); - cmsys::ifstream fin(this->Input.c_str()); + std::string inputFileName = this->Input; + if (cmSystemTools::FileIsFullPath(inputFileName)) { + inputFileName = cmSystemTools::CollapseFullPath(inputFileName); + } + lg->GetMakefile()->AddCMakeDependFile(inputFileName); + cmSystemTools::GetPermissions(inputFileName.c_str(), perm); + cmsys::ifstream fin(inputFileName.c_str()); if (!fin) { std::ostringstream e; - e << "Evaluation file \"" << this->Input << "\" cannot be read."; + e << "Evaluation file \"" << inputFileName << "\" cannot be read."; lg->IssueMessage(cmake::FATAL_ERROR, e.str()); return; } |