Make internal TARGET_PROPERTY generator expressions more robust

While collecting usage requirements from the `INTERFACE_*` properties of
directly linked targets, we internally generate `TARGET_PROPERTY:` and
`TARGET_OBJECTS:` generator expressions to refer to those properties on
those targets.  At the point we generate these expressions we already
have a pointer to an exact `cmGeneratorTarget` instance.

Switch from using the target name in these generator expressions to
using an internal unique name generated for each `cmGeneratorTarget`
instance to be referenced.  This avoids depending on the user-facing
target name to find the same target we already have.
This commit is contained in:
Brad King
2018-09-07 10:56:17 -04:00
parent 94a75801c8
commit 2f708f5d65
4 changed files with 33 additions and 3 deletions

View File

@@ -303,6 +303,10 @@ public:
void IndexTarget(cmTarget* t);
void IndexGeneratorTarget(cmGeneratorTarget* gt);
// Index the target using a name that is unique to that target
// even if other targets have the same name.
std::string IndexGeneratorTargetUniquely(cmGeneratorTarget const* gt);
static bool IsReservedTarget(std::string const& name);
virtual const char* GetAllTargetName() const { return "ALL_BUILD"; }