Merge topic 'add_custom_command-genex-slash'

c16641607f add_custom_command: Delay slash conversion until after genex evaluation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3791
This commit is contained in:
Brad King 2019-09-16 14:16:40 +00:00 committed by Kitware Robot
commit 1df2f8803b
4 changed files with 29 additions and 8 deletions

View File

@ -4,7 +4,6 @@
#include <sstream>
#include <unordered_set>
#include <utility>
#include "cmCustomCommand.h"
#include "cmCustomCommandLines.h"
@ -248,6 +247,8 @@ bool cmAddCustomCommandCommand(std::vector<std::string> const& args,
// An implicit dependency starting point is also an
// explicit dependency.
std::string dep = copy;
// Upfront path conversion is correct because Genex
// are not supported.
cmSystemTools::ConvertToUnixSlashes(dep);
depends.push_back(dep);
@ -264,9 +265,7 @@ bool cmAddCustomCommandCommand(std::vector<std::string> const& args,
target = copy;
break;
case doing_depends: {
std::string dep = copy;
cmSystemTools::ConvertToUnixSlashes(dep);
depends.push_back(std::move(dep));
depends.push_back(copy);
} break;
case doing_outputs:
outputs.push_back(filename);

View File

@ -58,6 +58,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(cmCustomCommand const& cc,
std::vector<std::string> result =
cmExpandedList(cge->Evaluate(this->LG, this->Config));
for (std::string& it : result) {
cmSystemTools::ConvertToUnixSlashes(it);
if (cmSystemTools::FileIsFullPath(it)) {
it = cmSystemTools::CollapseFullPath(it);
}

View File

@ -86,7 +86,7 @@ add_custom_target(check-part1 ALL
-Dtest_colons_4=$<1:C:\\CMake>
-Dtest_colons_5=$<1:C:/CMake>
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part1.cmake
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 1 of 4)"
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 1 of 5)"
VERBATIM
)
@ -157,7 +157,7 @@ add_custom_target(check-part2 ALL
-Dtest_arbitrary_content_comma_9=$<1:a,,b,,>
-Dtest_arbitrary_content_comma_10=$<1:,,a,,b,,>
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part2.cmake
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 2 of 4)"
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 2 of 5)"
VERBATIM
)
@ -251,7 +251,7 @@ add_custom_target(check-part3 ALL
-Dequal22=$<EQUAL:10,-012>
-Dequal23=$<EQUAL:-10,-012>
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part3.cmake
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 3 of 4)"
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 3 of 5)"
VERBATIM
)
@ -277,7 +277,27 @@ add_custom_target(check-part4 ALL
-DWIN32=${WIN32}
-DCMAKE_GENERATOR=${CMAKE_GENERATOR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/check-part4.cmake
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 4 of 4)"
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 4 of 5)"
VERBATIM
)
add_custom_target(check-part5 ALL
COMMAND ${CMAKE_COMMAND} -E echo "check done (part 5 of 5)"
DEPENDS check-part5.stamp
VERBATIM
)
add_custom_command(
OUTPUT check-part5.stamp
DEPENDS $<FILTER:file.foo.bar,EXCLUDE,\\.foo\\.bar$>
COMMAND ${CMAKE_COMMAND} -E sleep 0
VERBATIM
)
set_property(SOURCE check-part5.stamp PROPERTY SYMBOLIC 1)
add_custom_command(
OUTPUT file.foo.bar
COMMAND ${CMAKE_COMMAND} -P check-part5.cmake
VERBATIM
)

View File

@ -0,0 +1 @@
message(SEND_ERROR "$<FILTER:file.foo.bar,EXCLUDE,\\.foo\\.bar$> genex in DEPENDS argument of 'add_custom_command()' is not empty")