Add _qt_internal_relative_path
This is a compatibility function for `cmake_path(RELATIVE_PATH)`. For CMake<3.20 it uses `file(RELATIVE_PATH)` instead Change-Id: Ibf9ca221c1753bd99dcc1820bffaea28f9bfe5af Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 334acc2eb3ec0cba702780036c94abdac306864e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 54f5a61fbc01ac6b176a3811294aea1aa32ecdba)
This commit is contained in:
parent
12ebf4a046
commit
d002fa52e2
@ -675,3 +675,57 @@ function(_qt_internal_forward_function_args)
|
||||
|
||||
set(${arg_FORWARD_OUT_VAR} "${forward_args}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Compatibility of `cmake_path(RELATIVE_PATH)`
|
||||
#
|
||||
# In order to be compatible with `file(RELATIVE_PATH)`, path normalization of the result is
|
||||
# always performed, with the trailing slash stripped.
|
||||
#
|
||||
# Synopsis
|
||||
#
|
||||
# _qt_internal_relative_path(<path-var>
|
||||
# [BASE_DIRECTORY <input>]
|
||||
# [OUTPUT_VARIABLE <out-var>]
|
||||
# )
|
||||
#
|
||||
# Arguments
|
||||
#
|
||||
# `path-var`
|
||||
# Equivalent to `cmake_path(RELATIVE_PATH <path-var>)`.
|
||||
#
|
||||
# `BASE_DIRECTORY`
|
||||
# Equivalent to `cmake_path(RELATIVE_PATH BASE_DIRECTORY)`.
|
||||
#
|
||||
# `OUTPUT_VARIABLE`
|
||||
# Equivalent to `cmake_path(RELATIVE_PATH OUTPUT_VARIABLE)`.
|
||||
function(_qt_internal_relative_path path_var)
|
||||
set(option_args "")
|
||||
set(single_args
|
||||
BASE_DIRECTORY
|
||||
OUTPUT_VARIABLE
|
||||
)
|
||||
set(multi_args "")
|
||||
cmake_parse_arguments(PARSE_ARGV 1 arg "${option_args}" "${single_args}" "${multi_args}")
|
||||
|
||||
if(NOT arg_BASE_DIRECTORY)
|
||||
set(arg_BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif()
|
||||
if(NOT arg_OUTPUT_VARIABLE)
|
||||
set(arg_OUTPUT_VARIABLE ${path_var})
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.20)
|
||||
file(RELATIVE_PATH ${arg_OUTPUT_VARIABLE}
|
||||
"${arg_BASE_DIRECTORY}"
|
||||
"${${path_var}}")
|
||||
else()
|
||||
cmake_path(RELATIVE_PATH ${path_var}
|
||||
BASE_DIRECTORY "${arg_BASE_DIRECTORY}"
|
||||
OUTPUT_VARIABLE ${arg_OUTPUT_VARIABLE}
|
||||
)
|
||||
cmake_path(NORMAL_PATH ${arg_OUTPUT_VARIABLE})
|
||||
string(REGEX REPLACE "/$" "" ${arg_OUTPUT_VARIABLE}
|
||||
"${${arg_OUTPUT_VARIABLE}}")
|
||||
endif()
|
||||
set(${arg_OUTPUT_VARIABLE} "${${arg_OUTPUT_VARIABLE}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
Loading…
x
Reference in New Issue
Block a user