EXPORT_COMPILE_COMMANDS: Write absolute posix paths to compile_commands.json
Avoid platform-specific path formats in structured fields.
This commit is contained in:
parent
ff119423b9
commit
971a8ded06
@ -1213,11 +1213,8 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand(
|
||||
*this->CompileCommandsStream << ",\n";
|
||||
}
|
||||
|
||||
std::string sourceFileName = sourceFile;
|
||||
if (!cmSystemTools::FileIsFullPath(sourceFileName)) {
|
||||
sourceFileName = cmSystemTools::CollapseFullPath(
|
||||
sourceFileName, this->GetCMakeInstance()->GetHomeOutputDirectory());
|
||||
}
|
||||
std::string sourceFileName =
|
||||
cmSystemTools::CollapseFullPath(sourceFile, buildFileDir);
|
||||
|
||||
/* clang-format off */
|
||||
*this->CompileCommandsStream << "{\n"
|
||||
@ -1228,7 +1225,9 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand(
|
||||
<< R"( "file": ")"
|
||||
<< cmGlobalGenerator::EscapeJSON(sourceFileName) << "\",\n"
|
||||
<< R"( "output": ")"
|
||||
<< cmGlobalGenerator::EscapeJSON(objPath) << "\"\n"
|
||||
<< cmGlobalGenerator::EscapeJSON(
|
||||
cmSystemTools::CollapseFullPath(objPath, buildFileDir))
|
||||
<< "\"\n"
|
||||
<< "}";
|
||||
/* clang-format on */
|
||||
}
|
||||
|
@ -2,23 +2,25 @@ set(expected_compile_commands
|
||||
[==[^\[
|
||||
{
|
||||
"directory": "[^
|
||||
]*(/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\CompileCommands-build)",
|
||||
]*/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build",
|
||||
"command": "[^
|
||||
]*Debug[^
|
||||
]*",
|
||||
"file": "[^
|
||||
]*(/Tests/RunCMake/NinjaMultiConfig/main\.c|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\main\.c)",
|
||||
"output": "(CMakeFiles/exe\.dir/Debug/main\.c\.o|CMakeFiles\\\\exe\.dir\\\\Debug\\\\main\.c\.(obj|o))"
|
||||
]*/Tests/RunCMake/NinjaMultiConfig/main\.c",
|
||||
"output": "[^
|
||||
]*/CMakeFiles/exe\.dir/Debug/main\.c\.(obj|o)"
|
||||
},
|
||||
{
|
||||
"directory": "[^
|
||||
]*(/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\CompileCommands-build)",
|
||||
]*/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build",
|
||||
"command": "[^
|
||||
]*Release[^
|
||||
]*",
|
||||
"file": "[^
|
||||
]*(/Tests/RunCMake/NinjaMultiConfig/main\.c|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\main\.c)",
|
||||
"output": "(CMakeFiles/exe\.dir/Release/main\.c\.o|CMakeFiles\\\\exe\.dir\\\\Release\\\\main\.c\.(obj|o))"
|
||||
]*/Tests/RunCMake/NinjaMultiConfig/main\.c",
|
||||
"output": "[^
|
||||
]*/CMakeFiles/exe\.dir/Release/main\.c\.(obj|o)"
|
||||
}
|
||||
]
|
||||
$]==])
|
||||
|
@ -9,27 +9,29 @@ set(expected_compile_commands
|
||||
[==[^\[
|
||||
{
|
||||
"directory": "[^
|
||||
]*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
||||
]*/Tests/RunCMake/Swift/CompileCommands-build",
|
||||
"command": "[^
|
||||
]*swiftc[^
|
||||
]* (\\")?[^
|
||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
||||
"file": "[^
|
||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)",
|
||||
"output": "(CMakeFiles/CompileCommandLib.dir/(Debug/)?E.swift.o|CMakeFiles\\\\CompileCommandLib.dir\\\\(Debug\\\\)?E.swift.obj)"
|
||||
]*/Tests/RunCMake/Swift/E.swift",
|
||||
"output": "[^
|
||||
]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?E.swift.(o|obj)"
|
||||
},
|
||||
{
|
||||
"directory": "[^
|
||||
]*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
||||
]*/Tests/RunCMake/Swift/CompileCommands-build",
|
||||
"command": "[^
|
||||
]*swiftc[^
|
||||
]* (\\")?[^
|
||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
||||
"file": "[^
|
||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)",
|
||||
"output": "(CMakeFiles/CompileCommandLib.dir/(Debug/)?L.swift.o|CMakeFiles\\\\CompileCommandLib.dir\\\\(Debug\\\\)?L.swift.obj)"
|
||||
]*/Tests/RunCMake/Swift/L.swift",
|
||||
"output": "[^
|
||||
]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?L.swift.(o|obj)"
|
||||
}]==]
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user