| 
					
				 | 
			
			
				@@ -277,8 +277,12 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           "$<TARGET_PROPERTY:...> expression requires one or two parameters"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return std::string(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    cmsys::RegularExpression nameValidator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    nameValidator.compile("^[A-Za-z0-9_.-]+$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmsys::RegularExpression targetNameValidator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // The ':' is supported to allow use with IMPORTED targets. At least 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Qt 4 and 5 IMPORTED targets use ':' as the namespace delimiter. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    targetNameValidator.compile("^[A-Za-z0-9_.:-]+$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmsys::RegularExpression propertyNameValidator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    propertyNameValidator.compile("^[A-Za-z0-9_]+$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmGeneratorTarget* target = context->Target; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string propertyName = *parameters.begin(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,9 +305,9 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       std::string targetName = parameters.front(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       propertyName = parameters[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!nameValidator.find(targetName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!targetNameValidator.find(targetName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!nameValidator.find(propertyName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!propertyNameValidator.find(propertyName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           ::reportError(context, content->GetOriginalExpression(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         "Target name and property name not supported."); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -335,7 +339,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return std::string(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!nameValidator.find(propertyName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (!propertyNameValidator.find(propertyName.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ::reportError(context, content->GetOriginalExpression(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     "Property name not supported."); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -480,7 +484,8 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::string name = *parameters.begin(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cmsys::RegularExpression targetValidator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    targetValidator.compile("^[A-Za-z0-9_.-]+$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // The ':' is supported to allow use with IMPORTED targets. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    targetValidator.compile("^[A-Za-z0-9_.:-]+$"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!targetValidator.find(name.c_str())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ::reportError(context, content->GetOriginalExpression(), 
			 |