diff options
author | Miguel Costa <miguel.costa@qt.io> | 2019-07-08 16:16:15 +0200 |
---|---|---|
committer | Miguel Costa <miguel.costa@qt.io> | 2019-08-05 09:24:17 +0000 |
commit | cff73364c3b632a84ab3c7ca2f2ea32b563910ce (patch) | |
tree | 41d0c87644f3322aa29709bae3d58529511cd7fc /src/qtmsbuild/repc/qtrepc_cl.xml_TT | |
parent | 3e7709dcf5927f5674cccc253ecefae3ab758166 (diff) |
Add C++ compiler properties to Qt tools
Qt tools that generate C++ code will now include all properties
available in the C++ compiler property page, allowing the default values
of the C++ compiler properties to be used directly by the Qt tools,
without the need to actively monitor changes to maintain properties
synchronized. It is also possible to extend (i.e. append to) or override
(i.e. replace) the default C++ property values for Qt tools.
Task-number: QTVSADDINBUG-575
Task-number: QTVSADDINBUG-632
Change-Id: I456ee6b4926cd11c83c845656a617a4fb204542a
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/qtmsbuild/repc/qtrepc_cl.xml_TT')
-rw-r--r-- | src/qtmsbuild/repc/qtrepc_cl.xml_TT | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/src/qtmsbuild/repc/qtrepc_cl.xml_TT b/src/qtmsbuild/repc/qtrepc_cl.xml_TT new file mode 100644 index 00000000..563c7bda --- /dev/null +++ b/src/qtmsbuild/repc/qtrepc_cl.xml_TT @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ***************************************************************************** + ** + ** Copyright (C) 2019 The Qt Company Ltd. + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the Qt VS Tools. + ** + ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 3 as published by the Free Software + ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ***************************************************************************** +<#@output extension="xml" #> +<#@include file="$(SolutionDir)\common.tt" #> +<#@assembly Name="System.Xml" #> +<#@assembly Name="System.Xml.Linq" #> +<#@import namespace="System.Collections.Generic" #> +<#@import namespace="System.Linq" #> +<#@import namespace="System.Text" #> +<#@import namespace="System.Xml" #> +<#@import namespace="System.Xml.Linq" #> +<# + var pathRuleCl = Path.Combine(VC_TARGETS_PATH, "1033", "cl.xml"); + var xmlRule = XmlLoad(File.ReadAllText(pathRuleCl, Encoding.UTF8)); + var categoryNames = xmlRule + .Elements("Rule.Categories") + .Elements("Category") + .Where(x => x.Attribute("Subtype") == null) + .ToDictionary( + x => (string)x.Attribute("Name"), + x => (string)x.Attribute("DisplayName")); +#> + ** <#=WARNING_GENERATED_FILE#> + ***************************************************************************** +--> + +<ProjectSchemaDefinitions + xmlns="http://schemas.microsoft.com/build/2009/properties" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:sys="clr-namespace:System;assembly=mscorlib"> + <Rule + Name="QtRule60_Repc" + OverrideMode="Extend" + PageTemplate="tool" + DisplayName="Qt Remote Objects Compiler" + Order="9"> + <Rule.DataSource> + <DataSource + Persistence="ProjectFile" + ItemType="QtRepc" /> + </Rule.DataSource> + <Rule.Categories> + <Category Name="RepcCpp" DisplayName="Override C/C++"/> + </Rule.Categories> + <EnumProperty + Name="OverrideClCompile" + Category="RepcCpp" + DisplayName="Override C/C++ Properties" + Description="Define how C/C++ properties are redefined for Repc"> + <EnumValue Name="extend" DisplayName= +"Extend (append override definitions to C/C++ list properties; replace other properties)"/> + <EnumValue Name="replace" DisplayName= +"Replace (use override definitions instead of C/C++ properties)"/> + <EnumValue Name="false" DisplayName= +"Disabled (use C/C++ properties; ignore override definitions)"/> + </EnumProperty> + <StringListProperty Name="IncludePath" Switch=""-I[value]"" Visible="false"/> + <StringListProperty Name="Define" Switch="-D " Visible="false"/> + <StringListProperty Name="Undefine" Switch="-U[value]" Visible="false"/> + <!-- BEGIN Generated Text <#=XML_COMMENT_END#> +<#= +XmlPrint(xmlRule.Elements() + .Where(x => x.Name.ToString().EndsWith("Property")) + .Where(x => (string)x.Attribute("Visible") != "false") + .Where(x => (string)x.Attribute("Category") != "Command Line") + .Where(x => !x.Descendants("DataSource").Any()) + .GroupBy(x => (string)x.Attribute("Category")) + .SelectMany(y => y.Select(x => + { + x = new XElement(x); + x.SetAttributeValue("Category", "RepcCpp"); + x.SetAttributeValue("Description", "(overrides C/C++ property) " + + (string)x.Attribute("Description")); + return x; + }) + .Prepend(new XElement("StringProperty", + new XAttribute("Name", "QtCppHeader_" + y.Key.Replace(' ', '_')), + new XAttribute("Category", "RepcCpp"), + new XAttribute("ReadOnly", "true"), + new XAttribute("DisplayName", string.Format("{0} {1} {2}", + new string('#', 10), categoryNames[y.Key], new string('#', 30))))))) +#> + <#=XML_COMMENT_BEGIN#> END Generated Text --> + </Rule> +</ProjectSchemaDefinitions> |