From 2713444900db89a5c291352c03b233f96c69a8f9 Mon Sep 17 00:00:00 2001 From: Amir Masoud Abdol Date: Fri, 2 Jun 2023 15:30:55 +0200 Subject: [PATCH] Fix an issue with processing -prefix paths ending with \ on Windows In cases like `C:\` or `C:\D\E F G\`, we had the issue were Windows' path separator was acting as an escape and was corrupting configure arguments', so, we were ending up with `-DCMAKE_INSTALL_PREFIX=C`, or were cutting the argument list short, and ended up ignoring some of the arguments. Change-Id: I433af61d5c143cc37a64dcf8ac82a1a78ce543a5 Reviewed-by: Alexandru Croitor (cherry picked from commit b738ad7e3afd41c6d43d8b434fe221ab9b27bff1) --- cmake/QtWriteArgsFile.cmake | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cmake/QtWriteArgsFile.cmake b/cmake/QtWriteArgsFile.cmake index acc771ec3b7..77a9eb24639 100644 --- a/cmake/QtWriteArgsFile.cmake +++ b/cmake/QtWriteArgsFile.cmake @@ -19,8 +19,15 @@ cmake_minimum_required(VERSION 3.16) # Read arguments from IN_FILE and separate them. file(READ "${IN_FILE}" raw_args) +# To catch cases where the path ends with an `\`, e.g., `-prefix "C:\Path\"` +string(REPLACE "\\\"" "\"" raw_args "${raw_args}") +string(REPLACE ";" "[[;]]" raw_args "${raw_args}") + separate_arguments(args NATIVE_COMMAND "${raw_args}") +string(REPLACE "\;" ";" args "${args}") +string(REPLACE "[[;]]" "\;" args "${args}") + if(DEFINED REDO_FILE) file(READ "${REDO_FILE}" raw_redo_args) separate_arguments(redo_args NATIVE_COMMAND "${raw_redo_args}") @@ -65,7 +72,6 @@ if(DEFINED REDO_FILE) else() list(APPEND args "${redo_args}") endif() - endif() # Skip arguments if requested