Skip file-level dependencies on custom targets (#11332)
A custom command may name a target created by add_custom_target in its DEPENDS field. Treat this case as a target-level dependency only since a custom target provides no standard file on which to add a file-level dependency.
This commit is contained in:
parent
e30a775f68
commit
ced1d5eccd
|
@ -1878,10 +1878,9 @@ bool cmLocalGenerator::GetRealDependency(const char* inName,
|
||||||
break;
|
break;
|
||||||
case cmTarget::UTILITY:
|
case cmTarget::UTILITY:
|
||||||
case cmTarget::GLOBAL_TARGET:
|
case cmTarget::GLOBAL_TARGET:
|
||||||
// Depending on a utility target may not work but just trust
|
// A utility target has no file on which to depend. This was listed
|
||||||
// the user to have given a valid name.
|
// only to get the target-level dependency.
|
||||||
dep = inName;
|
return false;
|
||||||
return true;
|
|
||||||
case cmTarget::INSTALL_FILES:
|
case cmTarget::INSTALL_FILES:
|
||||||
case cmTarget::INSTALL_PROGRAMS:
|
case cmTarget::INSTALL_PROGRAMS:
|
||||||
case cmTarget::INSTALL_DIRECTORY:
|
case cmTarget::INSTALL_DIRECTORY:
|
||||||
|
|
|
@ -158,6 +158,7 @@ public:
|
||||||
|
|
||||||
/** Translate a dependency as given in CMake code to the name to
|
/** Translate a dependency as given in CMake code to the name to
|
||||||
appear in a generated build file. If the given name is that of
|
appear in a generated build file. If the given name is that of
|
||||||
|
a utility target, returns false. If the given name is that of
|
||||||
a CMake target it will be transformed to the real output
|
a CMake target it will be transformed to the real output
|
||||||
location of that target for the given configuration. If the
|
location of that target for the given configuration. If the
|
||||||
given name is the full path to a file it will be returned.
|
given name is the full path to a file it will be returned.
|
||||||
|
|
|
@ -130,6 +130,7 @@ ADD_CUSTOM_COMMAND(
|
||||||
################################################################
|
################################################################
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.pre
|
ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/foo.pre
|
||||||
DEPENDS ${PROJECT_SOURCE_DIR}/foo.in
|
DEPENDS ${PROJECT_SOURCE_DIR}/foo.in
|
||||||
|
TDocument # Ensure doc1.h generates before this target
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
ARGS -E copy ${PROJECT_SOURCE_DIR}/foo.in
|
ARGS -E copy ${PROJECT_SOURCE_DIR}/foo.in
|
||||||
${PROJECT_BINARY_DIR}/foo.pre
|
${PROJECT_BINARY_DIR}/foo.pre
|
||||||
|
@ -181,10 +182,6 @@ ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/generated.c
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(CustomCommand GeneratedHeader)
|
TARGET_LINK_LIBRARIES(CustomCommand GeneratedHeader)
|
||||||
|
|
||||||
# must add a dependency on TDocument otherwise it might never build and
|
|
||||||
# the CustomCommand executable really needs doc1.h
|
|
||||||
ADD_DEPENDENCIES(CustomCommand TDocument)
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Test for using just the target name as executable in the COMMAND
|
# Test for using just the target name as executable in the COMMAND
|
||||||
# section. Has to be recognized and replaced by CMake with the output
|
# section. Has to be recognized and replaced by CMake with the output
|
||||||
|
|
Loading…
Reference in New Issue