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";
|
*this->CompileCommandsStream << ",\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string sourceFileName = sourceFile;
|
std::string sourceFileName =
|
||||||
if (!cmSystemTools::FileIsFullPath(sourceFileName)) {
|
cmSystemTools::CollapseFullPath(sourceFile, buildFileDir);
|
||||||
sourceFileName = cmSystemTools::CollapseFullPath(
|
|
||||||
sourceFileName, this->GetCMakeInstance()->GetHomeOutputDirectory());
|
|
||||||
}
|
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
*this->CompileCommandsStream << "{\n"
|
*this->CompileCommandsStream << "{\n"
|
||||||
@ -1228,7 +1225,9 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand(
|
|||||||
<< R"( "file": ")"
|
<< R"( "file": ")"
|
||||||
<< cmGlobalGenerator::EscapeJSON(sourceFileName) << "\",\n"
|
<< cmGlobalGenerator::EscapeJSON(sourceFileName) << "\",\n"
|
||||||
<< R"( "output": ")"
|
<< R"( "output": ")"
|
||||||
<< cmGlobalGenerator::EscapeJSON(objPath) << "\"\n"
|
<< cmGlobalGenerator::EscapeJSON(
|
||||||
|
cmSystemTools::CollapseFullPath(objPath, buildFileDir))
|
||||||
|
<< "\"\n"
|
||||||
<< "}";
|
<< "}";
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
}
|
}
|
||||||
|
@ -2,23 +2,25 @@ set(expected_compile_commands
|
|||||||
[==[^\[
|
[==[^\[
|
||||||
{
|
{
|
||||||
"directory": "[^
|
"directory": "[^
|
||||||
]*(/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\CompileCommands-build)",
|
]*/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build",
|
||||||
"command": "[^
|
"command": "[^
|
||||||
]*Debug[^
|
]*Debug[^
|
||||||
]*",
|
]*",
|
||||||
"file": "[^
|
"file": "[^
|
||||||
]*(/Tests/RunCMake/NinjaMultiConfig/main\.c|\\\\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))"
|
"output": "[^
|
||||||
|
]*/CMakeFiles/exe\.dir/Debug/main\.c\.(obj|o)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "[^
|
"directory": "[^
|
||||||
]*(/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\NinjaMultiConfig\\\\CompileCommands-build)",
|
]*/Tests/RunCMake/NinjaMultiConfig/CompileCommands-build",
|
||||||
"command": "[^
|
"command": "[^
|
||||||
]*Release[^
|
]*Release[^
|
||||||
]*",
|
]*",
|
||||||
"file": "[^
|
"file": "[^
|
||||||
]*(/Tests/RunCMake/NinjaMultiConfig/main\.c|\\\\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))"
|
"output": "[^
|
||||||
|
]*/CMakeFiles/exe\.dir/Release/main\.c\.(obj|o)"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
$]==])
|
$]==])
|
||||||
|
@ -9,27 +9,29 @@ set(expected_compile_commands
|
|||||||
[==[^\[
|
[==[^\[
|
||||||
{
|
{
|
||||||
"directory": "[^
|
"directory": "[^
|
||||||
]*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
]*/Tests/RunCMake/Swift/CompileCommands-build",
|
||||||
"command": "[^
|
"command": "[^
|
||||||
]*swiftc[^
|
]*swiftc[^
|
||||||
]* (\\")?[^
|
]* (\\")?[^
|
||||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
||||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
||||||
"file": "[^
|
"file": "[^
|
||||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\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)"
|
"output": "[^
|
||||||
|
]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?E.swift.(o|obj)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"directory": "[^
|
"directory": "[^
|
||||||
]*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
]*/Tests/RunCMake/Swift/CompileCommands-build",
|
||||||
"command": "[^
|
"command": "[^
|
||||||
]*swiftc[^
|
]*swiftc[^
|
||||||
]* (\\")?[^
|
]* (\\")?[^
|
||||||
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
]*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?[^
|
||||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
]*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
||||||
"file": "[^
|
"file": "[^
|
||||||
]*(/Tests/RunCMake/Swift/L.swift|\\\\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)"
|
"output": "[^
|
||||||
|
]*/CMakeFiles/CompileCommandLib.dir/(Debug/)?L.swift.(o|obj)"
|
||||||
}]==]
|
}]==]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user