diff options
author | Stephen Kelly <steveire@gmail.com> | 2012-06-18 17:59:33 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2012-06-19 07:01:28 (GMT) |
commit | e30d46e20ee71d57e09f83fafa39b7e464efe110 (patch) | |
tree | c2a4ed0ea02f844272200031ca19a19462205573 /Source/cmNinjaTargetGenerator.cxx | |
parent | 1d8199ffecbd8881c38e0e63ee07844a50abac49 (diff) | |
download | CMake-e30d46e20ee71d57e09f83fafa39b7e464efe110.zip CMake-e30d46e20ee71d57e09f83fafa39b7e464efe110.tar.gz CMake-e30d46e20ee71d57e09f83fafa39b7e464efe110.tar.bz2 |
Use full paths in compile_commands.json for out of source builds.
Clang tooling requires that paths in the directory and file JSON
fields are relative to the directory field, but clang doesn't normalize
the paths already. The result is that clang doesn't find the relevant
entry for files which begin with ../.
Diffstat (limited to 'Source/cmNinjaTargetGenerator.cxx')
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index a362d13..0c8ae8d 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -492,6 +492,15 @@ cmNinjaTargetGenerator std::string escapedSourceFileName = this->LocalGenerator->ConvertToOutputFormat( sourceFileName.c_str(), cmLocalGenerator::SHELL); + + if (!cmSystemTools::FileIsFullPath(escapedSourceFileName.c_str())) + { + escapedSourceFileName = cmSystemTools::CollapseFullPath( + escapedSourceFileName.c_str(), + this->GetGlobalGenerator()->GetCMakeInstance()->GetHomeOutputDirectory()); + } + + compileObjectVars.Source = escapedSourceFileName.c_str(); compileObjectVars.Object = objectFileName.c_str(); compileObjectVars.Flags = vars["FLAGS"].c_str(); |