From 43558156d451b605bb9a3d14d53a3896ea98d73a Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 31 Jul 2013 13:16:29 +0200 Subject: [PATCH] cmTarget: Add NAME property In generator expression contexts, this can be used to determine the name of the head target in the evaluation. --- Source/cmTarget.cxx | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 560f07ccc..667c6856b 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -944,6 +944,11 @@ void cmTarget::DefineProperties(cmake *cm) "This property is the configuration-specific version of " "OSX_ARCHITECTURES."); + cm->DefineProperty + ("NAME", cmProperty::TARGET, + "Logical name for the target.", + "Read-only logical name for the target as used by CMake."); + cm->DefineProperty ("EXPORT_NAME", cmProperty::TARGET, "Exported name for target files.", @@ -2971,7 +2976,13 @@ void cmTarget::SetProperty(const char* prop, const char* value) { return; } - + if (strcmp(prop, "NAME") == 0) + { + cmOStringStream e; + e << "NAME property is read-only\n"; + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); + return; + } if(strcmp(prop,"INCLUDE_DIRECTORIES") == 0) { cmListFileBacktrace lfbt; @@ -3038,6 +3049,13 @@ void cmTarget::AppendProperty(const char* prop, const char* value, { return; } + if (strcmp(prop, "NAME") == 0) + { + cmOStringStream e; + e << "NAME property is read-only\n"; + this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); + return; + } if(strcmp(prop,"INCLUDE_DIRECTORIES") == 0) { cmListFileBacktrace lfbt; @@ -4053,6 +4071,11 @@ const char *cmTarget::GetProperty(const char* prop, return 0; } + if (strcmp(prop, "NAME") == 0) + { + return this->GetName(); + } + // Watch for special "computed" properties that are dependent on // other properties or variables. Always recompute them. if(this->GetType() == cmTarget::EXECUTABLE ||