instrumentation: Only quote arguments that contain a space

This commit is contained in:
Martin Duffy
2025-10-22 10:15:16 -04:00
parent b27be83f4a
commit 2976742520
4 changed files with 12 additions and 4 deletions

View File

@@ -743,7 +743,11 @@ std::string cmInstrumentation::GetCommandStr(
{
std::string command_str;
for (size_t i = 0; i < args.size(); ++i) {
command_str = cmStrCat(command_str, '"', args[i], '"');
if (args[i].find(' ') != std::string::npos) {
command_str = cmStrCat(command_str, '"', args[i], '"');
} else {
command_str = cmStrCat(command_str, args[i]);
}
if (i < args.size() - 1) {
command_str = cmStrCat(command_str, ' ');
}

View File

@@ -63,6 +63,10 @@ function(instrument test)
set(copy_loc ${v1}/query/generated) # Copied files here should be cleared on configure
endif()
if (ARGS_COPY_QUERIES)
set(CMAKE_COMMAND_QUOTE ${CMAKE_COMMAND})
if (CMAKE_COMMAND MATCHES " ")
set(CMAKE_COMMAND_QUOTE "\\\"${CMAKE_COMMAND}\\\"")
endif()
file(MAKE_DIRECTORY ${copy_loc})
set(generated_queries "0;1;2")
foreach(n IN LISTS generated_queries)

View File

@@ -1,7 +1,7 @@
{
"callbacks" :
[
"\"@CMAKE_COMMAND@\" \"-E\" \"echo\" \"callback1\""
"@CMAKE_COMMAND_QUOTE@ -E echo callback1"
],
"hooks" :
[

View File

@@ -1,8 +1,8 @@
{
"callbacks" :
[
"\"@CMAKE_COMMAND@\" \"-E\" \"echo\" \"callback2\"",
"\"@CMAKE_COMMAND@\" \"-E\" \"echo\" \"callback3\""
"@CMAKE_COMMAND_QUOTE@ -E echo callback2",
"@CMAKE_COMMAND_QUOTE@ -E echo callback3"
],
"hooks" :
[