1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-15 20:46:37 +08:00

file: Fix CONFIGURE output relative path

In commit a6fee09484 (file: Add CONFIGURE subcommand, 2020-03-06,
v3.18.0-rc1~584^2) we accidentally treated relative path outputs
with respect to the current working directory.  Treat them with
respect to the current binary directory instead.

Fixes: #20885
This commit is contained in:
Brad King
2020-06-29 09:18:06 -04:00
parent e66fe75792
commit e5f5eeca2f
6 changed files with 10 additions and 3 deletions

View File

@@ -508,8 +508,7 @@ The arguments are:
``OUTPUT <output-file>``
Specify the output file name to generate. A relative path is treated with
respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. See policy
:policy:`CMP0070`.
respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`.
``<output-file>`` does not support generator expressions.
``CONTENT <content>``

View File

@@ -2862,7 +2862,8 @@ bool HandleConfigureCommand(std::vector<std::string> const& args,
// Check for generator expressions
const std::string input = args[4];
std::string outputFile = args[2];
std::string outputFile = cmSystemTools::CollapseFullPath(
args[2], status.GetMakefile().GetCurrentBinaryDirectory());
std::string::size_type pos = input.find_first_of("<>");
if (pos != std::string::npos) {

View File

@@ -7,3 +7,4 @@ run_cmake(DirOutput)
run_cmake(NewLineStyle-NoArg)
run_cmake(NewLineStyle-ValidArg)
run_cmake(NewLineStyle-WrongArg)
run_cmake(SubDir)

View File

@@ -0,0 +1,4 @@
set(expected "${RunCMake_TEST_BINARY_DIR}/SubDir/out.txt")
if(NOT EXISTS "${expected}")
set(RunCMake_TEST_FAILED "Expected file not created:\n ${expected}")
endif()

View File

@@ -0,0 +1 @@
add_subdirectory(SubDir)

View File

@@ -0,0 +1 @@
file(CONFIGURE OUTPUT out.txt CONTENT "")