This is beyond stupid.

Add QtMsBuild for appveyor -.-
pull/130/head
Peter Repukat 3 years ago
parent 9ab7087100
commit aff24b8a7e

@ -34,6 +34,7 @@
<QtInstall>6.2.0</QtInstall>
<QtModules>quick</QtModules>
<QtBuildConfig>debug</QtBuildConfig>
<QtQMLDebugEnable>true</QtQMLDebugEnable>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
<QtInstall>6.2.0</QtInstall>

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2020 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Item type definition and default values
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import private Qt property definitions
// -->
<ImportGroup Label="Qt">
<Import Project="$(MSBuildThisFileDirectory)\qt_private.props"/>
</ImportGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// User-defined settings
// -->
<PropertyGroup Label="UserMacros">
<!-- Placeholder for user macros written by VS Property Manager -->
</PropertyGroup>
<PropertyGroup>
<!-- Placeholder for properties written by VS Property Manager -->
</PropertyGroup>
<PropertyGroup>
<DefaultQtVersion>$(QTDIR)</DefaultQtVersion>
<QtToolsPath>$(DefaultQtVersion)\bin</QtToolsPath>
</PropertyGroup>
<ItemDefinitionGroup>
<!-- Placeholder for default metadata written by VS Property Manager -->
</ItemDefinitionGroup>
<ItemGroup>
<!-- Placeholder for items written by VS Property Manager -->
</ItemGroup>
</Project>

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2020 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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qtdeploy.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qtdeploy.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2020 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Deployment of Qt dependencies
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<QtDeploy Condition="'$(QtDeploy)' == ''">false</QtDeploy>
</PropertyGroup>
<ItemDefinitionGroup>
<QtDeploy>
<QtDeployFiles>$(TargetPath)</QtDeployFiles>
<QtDeployDir Condition="'$(QtDeployToProjectDir)' == 'true'">$(ProjectDir)</QtDeployDir>
<QtDeployDir Condition="'$(QtDeployToProjectDir)' != 'true'">$(OutDir)</QtDeployDir>
<QtDeployLibDir/>
<QtDeployPluginDir/>
<QtDeployDebugRelease>false</QtDeployDebugRelease>
<QtDeployPdb>false</QtDeployPdb>
<QtDeployForce>false</QtDeployForce>
<QtDeployNoPatchQt>false</QtDeployNoPatchQt>
<QtDeployNoPlugins>false</QtDeployNoPlugins>
<QtDeployNoLibraries>false</QtDeployNoLibraries>
<QtDeployQmlDir/>
<QtDeployQmlImport/>
<QtDeployNoQuickImport>false</QtDeployNoQuickImport>
<QtDeployNoTranslations>false</QtDeployNoTranslations>
<QtDeployNoSystemD3dCompiler>false</QtDeployNoSystemD3dCompiler>
<QtDeployNoVirtualKeyboard>false</QtDeployNoVirtualKeyboard>
<QtDeployCompilerRuntime>false</QtDeployCompilerRuntime>
<QtDeployWebkit2>false</QtDeployWebkit2>
<QtDeployAngle>false</QtDeployAngle>
<QtDeployNoOpenglSw>false</QtDeployNoOpenglSw>
<QtDeployIncludeModules/>
<QtDeployExcludeModules/>
<QtDeployVerbose>false</QtDeployVerbose>
<QtDeployVsContent Condition="'$(QtDeployVsContent)' == 'true'">true</QtDeployVsContent>
<QtDeployVsContent Condition="'$(QtDeployVsContent)' != 'true'">false</QtDeployVsContent>
</QtDeploy>
</ItemDefinitionGroup>
<ItemGroup Condition="'$(QtDeploy)' == 'true'">
<ProjectTools Include="QtDeploy"/>
</ItemGroup>
</Project>

@ -0,0 +1,342 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2020 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Deployment of Qt dependencies
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup property page
// -->
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtdeploy.xml" />
</ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Default deploy log location
// -->
<PropertyGroup>
<QtDeployLog Condition="'$(QtDeployLog)' == ''">$(IntDir)windeployqt.log</QtDeployLog>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Schedule QtDeploy target to run after Link
// -->
<PropertyGroup Condition="'$(QtDeploy)' == 'true' AND '$(ApplicationType)' != 'Linux'">
<BuildLinkTargets>$(BuildLinkTargets);QtDeploy</BuildLinkTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Deploy Qt files
// -->
<Target Name="QtDeploy"
AfterTargets="Link"
Inputs="$(TargetPath)" Outputs="$(QtDeployLog)"
Condition="'$(QtDeploy)' == 'true' AND '$(ApplicationType)' != 'Linux'">
<ItemGroup>
<QtDeploy Include="$(TargetPath)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert string lists in source item properties to lists of items
// -->
<Flatten Items="@(QtDeploy)"
Metadata="QtDeployFiles;
QtDeployDir;
QtDeployLibDir;
QtDeployPluginDir;
QtDeployDebugRelease;
QtDeployPdb;
QtDeployForce;
QtDeployNoPatchQt;
QtDeployNoPlugins;
QtDeployNoLibraries;
QtDeployQmlDir;
QtDeployQmlImport;
QtDeployNoQuickImport;
QtDeployNoTranslations;
QtDeployNoSystemD3dCompiler;
QtDeployNoVirtualKeyboard;
QtDeployCompilerRuntime;
QtDeployWebkit2;
QtDeployAngle;
QtDeployNoOpenglSw;
QtDeployIncludeModules;
QtDeployExcludeModules;
QtDeployVerbose">
<Output
TaskParameter="Result" ItemName="Options" />
</Flatten>
<ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Remove quotes from all paths
// -->
<Options>
<Value Condition="( '%(Name)' == 'QtDeployFiles'
OR '%(Name)' == 'QtDeployDir'
OR '%(Name)' == 'QtDeployLibDir'
OR '%(Name)' == 'QtDeployPluginDir'
OR '%(Name)' == 'QtDeployQmlDir'
OR '%(Name)' == 'QtDeployQmlImport' )"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</Options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////
// Escape trailing back-slash in paths
// -->
<Options>
<Value Condition="( '%(Name)' == 'QtDeployFiles'
OR '%(Name)' == 'QtDeployDir'
OR '%(Name)' == 'QtDeployLibDir'
OR '%(Name)' == 'QtDeployPluginDir'
OR '%(Name)' == 'QtDeployQmlDir'
OR '%(Name)' == 'QtDeployQmlImport' )
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</Options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////
// Add quotes to paths containing spaces
// -->
<Options>
<Value Condition="( '%(Name)' == 'QtDeployFiles'
OR '%(Name)' == 'QtDeployDir'
OR '%(Name)' == 'QtDeployLibDir'
OR '%(Name)' == 'QtDeployPluginDir'
OR '%(Name)' == 'QtDeployQmlDir'
OR '%(Name)' == 'QtDeployQmlImport' )
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</Options>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Generate tool command line arguments
// -->
<Options>
<!-- [files] Binaries or directory containing the binary. -->
<PosArg Condition="'%(Name)' == 'QtDeployFiles'">%(Value)</PosArg>
</Options>
<Options>
<!-- -dir <directory> Use directory instead of binary directory. -->
<Arg Condition="'%(Name)' == 'QtDeployDir'">--dir %(Value)</Arg>
</Options>
<Options>
<!-- -libdir <path> Copy libraries to path. -->
<Arg Condition="'%(Name)' == 'QtDeployLibDir'">--libdir %(Value)</Arg>
</Options>
<Options>
<!-- -plugindir <path> Copy plugins to path. -->
<Arg Condition="'%(Name)' == 'QtDeployPluginDir'">--plugindir %(Value)</Arg>
</Options>
<Options>
<!-- -debug Assume debug binaries.
-release Assume release binaries.-->
<Arg Condition="'%(Name)' == 'QtDeployDebugRelease' AND '%(Value)' == 'debug'"
>--debug</Arg>
<Arg Condition="'%(Name)' == 'QtDeployDebugRelease' AND '%(Value)' == 'release'"
>--release</Arg>
</Options>
<Options>
<!-- -pdb Deploy .pdb files (MSVC). -->
<Arg Condition="'%(Name)' == 'QtDeployPdb' AND '%(Value)' == 'true'"
>--pdb</Arg>
</Options>
<Options>
<!-- -force Force updating files. -->
<Arg Condition="'%(Name)' == 'QtDeployForce' AND '%(Value)' == 'true'"
>--force</Arg>
</Options>
<Options>
<!-- -no-patchqt Do not patch the Qt5Core library. -->
<Arg Condition="'%(Name)' == 'QtDeployNoPatchQt' AND '%(Value)' == 'true'"
>--no-patchqt</Arg>
</Options>
<Options>
<!-- -no-plugins Skip plugin deployment. -->
<Arg Condition="'%(Name)' == 'QtDeployNoPlugins' AND '%(Value)' == 'true'"
>--no-plugins</Arg>
</Options>
<Options>
<!-- -no-libraries Skip library deployment. -->
<Arg Condition="'%(Name)' == 'QtDeployNoLibraries' AND '%(Value)' == 'true'"
>--no-libraries</Arg>
</Options>
<Options>
<!-- -qmldir <directory> Scan for QML-imports starting from directory. -->
<Arg Condition="'%(Name)' == 'QtDeployQmlDir'">--qmldir %(Value)</Arg>
</Options>
<Options>
<!-- -qmlimport <directory> Add the given path to the QML module search
locations. -->
<Arg Condition="'%(Name)' == 'QtDeployQmlImport'">--qmlimport %(Value)</Arg>
</Options>
<Options>
<!-- -no-quick-import Skip deployment of Qt Quick imports. -->
<Arg Condition="'%(Name)' == 'QtDeployNoQuickImport' AND '%(Value)' == 'true'"
>--no-quick-import</Arg>
</Options>
<Options>
<!-- -no-translations Skip deployment of translations. -->
<Arg Condition="'%(Name)' == 'QtDeployNoTranslations' AND '%(Value)' == 'true'"
>--no-translations</Arg>
</Options>
<Options>
<!-- -no-system-d3d-compiler Skip deployment of the system D3D compiler. -->
<Arg Condition="'%(Name)' == 'QtDeployNoSystemD3dCompiler' AND '%(Value)' == 'true'"
>--no-system-d3d-compiler</Arg>
</Options>
<Options>
<!-- -no-virtualkeyboard Disable deployment of the Virtual Keyboard. -->
<Arg Condition="'%(Name)' == 'QtDeployNoVirtualKeyboard' AND '%(Value)' == 'true'"
>--no-virtualkeyboard</Arg>
</Options>
<Options>
<!-- -compiler-runtime Deploy compiler runtime (Desktop only).
-no-compiler-runtime Do not deploy compiler runtime (Desktop only). -->
<Arg Condition="'%(Name)' == 'QtDeployCompilerRuntime' AND '%(Value)' == 'deploy'"
>--compiler-runtime</Arg>
<Arg Condition="'%(Name)' == 'QtDeployCompilerRuntime' AND '%(Value)' == 'skip'"
>--no-compiler-runtime</Arg>
</Options>
<Options>
<!-- -webkit2 Deployment of WebKit2 (web process).
-no-webkit2 Skip deployment of WebKit2. -->
<Arg Condition="'%(Name)' == 'QtDeployWebkit2' AND '%(Value)' == 'deploy'"
>--webkit2</Arg>
<Arg Condition="'%(Name)' == 'QtDeployWebkit2' AND '%(Value)' == 'skip'"
>--no-webkit2</Arg>
</Options>
<Options>
<!-- -angle Force deployment of ANGLE.
-no-angle Disable deployment of ANGLE. -->
<Arg Condition="'%(Name)' == 'QtDeployAngle' AND '%(Value)' == 'deploy'"
>--angle</Arg>
<Arg Condition="'%(Name)' == 'QtDeployAngle' AND '%(Value)' == 'skip'"
>--no-angle</Arg>
</Options>
<Options>
<!-- -no-opengl-sw Do not deploy the software rasterizer library. -->
<Arg Condition="'%(Name)' == 'QtDeployNoOpenglSw' AND '%(Value)' == 'true'"
>--no-opengl-sw</Arg>
</Options>
<Options>
<!-- Qt libraries can be added by passing their name (-xml) ... -->
<Arg Condition="'%(Name)' == 'QtDeployIncludeModules'">-%(Value)</Arg>
</Options>
<Options>
<!-- ... or removed by passing the name prepended by -no- (-no-xml). -->
<Arg Condition="'%(Name)' == 'QtDeployExcludeModules'">--no-%(Value)</Arg>
</Options>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run windeployqt
// -->
<PropertyGroup>
<Cmd><![CDATA["$(QtToolsPath)\windeployqt.exe"]]></Cmd>
<Cmd>$(Cmd) --list target</Cmd>
<Cmd Condition="'%(Options.Arg)' != ''">$(Cmd) %(Options.Arg)</Cmd>
<Cmd Condition="'%(Options.PosArg)' != ''">$(Cmd) %(Options.PosArg)</Cmd>
</PropertyGroup>
<Message Importance="high" Text="windeployqt: $(Cmd)" />
<Exec Command="$(Cmd) > &quot;$(QtDeployLog)&quot;" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Read deploy log into QtDeployed list
// -->
<ReadLinesFromFile File="$(QtDeployLog)">
<Output TaskParameter="Lines" ItemName="QtDeployed" />
</ReadLinesFromFile>
<ItemGroup>
<QtDeployed Remove="@(QtDeployed)" Condition="!Exists('%(Fullpath)')"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Mark deployed files as source content for VS deployment project
// -->
<ItemGroup>
<None Include="@(QtDeployed)" Condition="'%(QtDeploy.QtDeployVsContent)' == 'true'">
<DeploymentContent>true</DeploymentContent>
<RootFolder>$(ProjectDir)</RootFolder>
</None>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Log output files; used by VS on clean and up-to-date check
// -->
<ItemGroup>
<QtDeployLog Include="$(QtDeployLog)"/>
<QtDeployed Include="$(QtDeployLog)"/>
</ItemGroup>
<WriteLinesToFile
File="$(TLogLocation)windeployqt.read.1u.tlog"
Lines="^$(ProjectPath)"
Overwrite="true" Encoding="Unicode"/>
<WriteLinesToFile
File="$(TLogLocation)windeployqt.write.1u.tlog"
Lines="^$(ProjectPath);@(QtDeployLog->'%(Fullpath)')"
Overwrite="true" Encoding="Unicode"/>
<WriteLinesToFile
File="$(TLogLocation)$(ProjectName).write.1u.tlog"
Lines="^$(ProjectFileName);@(QtDeployed->'%(Fullpath)')"
Overwrite="false" Encoding="Unicode"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<Cmd/>
</PropertyGroup>
<ItemGroup>
<Options Remove="@(Options)"/>
<QtDeploy Remove="@(QtDeploy)"/>
<QtDeployLog Remove="@(QtDeployLog)"/>
<QtDeployed Remove="@(QtDeployed)"/>
</ItemGroup>
</Target>
</Project>

@ -0,0 +1,366 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2020 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// windeployqt Property Page
//
// -->
<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="QtRule70_Deploy"
PageTemplate="tool"
DisplayName="Qt Deploy Tool"
Order="999">
<Rule.DataSource>
<DataSource
Persistence="UserFile"
ItemType="QtDeploy"
HasConfigurationCondition="true"/>
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="windeployqt"/>
</Rule.Categories>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Application Binary
// -->
<StringListProperty
Name="QtDeployFiles" DisplayName="Application Binary">
<StringListProperty.Description>
<sys:String>
<![CDATA[Binaries or directory containing the application binary ( [files] ).]]>
</sys:String>
</StringListProperty.Description>
</StringListProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Deployment Directory
// -->
<StringProperty
Name="QtDeployDir" DisplayName="Deployment Directory">
<StringProperty.Description>
<sys:String>
<![CDATA[Use directory instead of binary directory ( --dir <directory> ).]]>
</sys:String>
</StringProperty.Description>
</StringProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Library Directory
// -->
<StringProperty
Name="QtDeployLibDir" DisplayName="Library Directory">
<StringProperty.Description>
<sys:String>
<![CDATA[Copy libraries to path ( --libdir <path> ).]]>
</sys:String>
</StringProperty.Description>
</StringProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Plugin Directory
// -->
<StringProperty
Name="QtDeployPluginDir" DisplayName="Plugin Directory">
<StringProperty.Description>
<sys:String>
<![CDATA[Copy plugins to path ( --plugindir <path> ).]]>
</sys:String>
</StringProperty.Description>
</StringProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Debug/Release Binaries
// -->
<EnumProperty
Name="QtDeployDebugRelease" DisplayName="Debug/Release Binaries">
<EnumProperty.Description>
<sys:String>
<![CDATA[Assume debug or release binaries ( --debug | --release ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Default"/>
<EnumValue Name="debug" DisplayName="Debug ( --debug )"/>
<EnumValue Name="release" DisplayName="Release ( --release )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Deploy PDB Files
// -->
<EnumProperty
Name="QtDeployPdb" DisplayName="Deploy PDB Files">
<EnumProperty.Description>
<sys:String>
<![CDATA[Deploy .pdb files (MSVC) ( --pdb ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --pdb )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<EnumProperty
Name="QtDeployForce" DisplayName="Force Update">
<EnumProperty.Description>
<sys:String>
<![CDATA[Force updating files ( --force ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --force )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Qt5Core Patch
// -->
<EnumProperty
Name="QtDeployNoPatchQt" DisplayName="Skip Qt5Core Patch">
<EnumProperty.Description>
<sys:String>
<![CDATA[Do not patch the Qt5Core library ( --no-patchqt ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-patchqt )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Plugins
// -->
<EnumProperty
Name="QtDeployNoPlugins" DisplayName="Skip Plugins">
<EnumProperty.Description>
<sys:String>
<![CDATA[Skip plugin deployment ( --no-plugins ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-plugins )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Libraries
// -->
<EnumProperty
Name="QtDeployNoLibraries" DisplayName="Skip Libraries">
<EnumProperty.Description>
<sys:String>
<![CDATA[Skip library deployment ( --no-libraries ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-libraries )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// QML Directories Root
// -->
<StringProperty
Name="QtDeployQmlDir" DisplayName="QML Directories Root">
<StringProperty.Description>
<sys:String>
<![CDATA[Scan for QML-imports starting from directory ( --qmldir <directory> ).]]>
</sys:String>
</StringProperty.Description>
</StringProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// QML Modules Path
// -->
<StringListProperty
Name="QtDeployQmlImport" DisplayName="QML Modules Path">
<StringListProperty.Description>
<sys:String>
<![CDATA[Add the given path to the QML module search locations ( --qmlimport <directory> ).]]>
</sys:String>
</StringListProperty.Description>
</StringListProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Qt Quick Imports
// -->
<EnumProperty
Name="QtDeployNoQuickImport" DisplayName="Skip Qt Quick Imports">
<EnumProperty.Description>
<sys:String>
<![CDATA[Skip deployment of Qt Quick imports ( --no-quick-import ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-quick-import )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Translations
// -->
<EnumProperty
Name="QtDeployNoTranslations" DisplayName="Skip Translations">
<EnumProperty.Description>
<sys:String>
<![CDATA[Skip deployment of translations ( --no-translations ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-translations )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Direct3D Compiler
// -->
<EnumProperty
Name="QtDeployNoSystemD3dCompiler" DisplayName="Skip Direct3D Compiler">
<EnumProperty.Description>
<sys:String>
<![CDATA[Skip deployment of the system D3D compiler ( --no-system-d3d-compiler ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-system-d3d-compiler )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Virtual Keyboard
// -->
<EnumProperty
Name="QtDeployNoVirtualKeyboard" DisplayName="Skip Virtual Keyboard">
<EnumProperty.Description>
<sys:String>
<![CDATA[Disable deployment of the Virtual Keyboard ( --no-virtualkeyboard ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-virtualkeyboard )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Compiler Runtime
// -->
<EnumProperty
Name="QtDeployCompilerRuntime" DisplayName="Compiler Runtime">
<EnumProperty.Description>
<sys:String>
<![CDATA[Deploy compiler runtime (Desktop only).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Default"/>
<EnumValue Name="deploy" DisplayName="Deploy ( --compiler-runtime )"/>
<EnumValue Name="skip" DisplayName="Do Not Deploy ( --no-compiler-runtime )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// WebKit2 Deployment
// -->
<EnumProperty
Name="QtDeployWebkit2" DisplayName="WebKit2 Deployment">
<EnumProperty.Description>
<sys:String>
<![CDATA[Deployment of WebKit2 (web process).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Default"/>
<EnumValue Name="deploy" DisplayName="Deploy ( --webkit2 )"/>
<EnumValue Name="skip" DisplayName="Do Not Deploy ( --no-webkit2 )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// ANGLE Deployment
// -->
<EnumProperty
Name="QtDeployAngle" DisplayName="ANGLE Deployment">
<EnumProperty.Description>
<sys:String>
<![CDATA[Deployment of ANGLE.]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Default"/>
<EnumValue Name="deploy" DisplayName="Deploy ( --angle )"/>
<EnumValue Name="skip" DisplayName="Do Not Deploy ( --no-angle )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip Rasterizer Library
// -->
<EnumProperty
Name="QtDeployNoOpenglSw" DisplayName="Skip Rasterizer Library">
<EnumProperty.Description>
<sys:String>
<![CDATA[Do not deploy the software rasterizer library ( --no-opengl-sw ).]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enabled ( --no-opengl-sw )"/>
</EnumProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Include Qt Libraries
// -->
<StringListProperty
Name="QtDeployIncludeModules" DisplayName="Include Qt Libraries">
<StringListProperty.Description>
<sys:String>
<![CDATA[Qt libraries can be added by passing their name ( -<name> ).]]>
</sys:String>
</StringListProperty.Description>
</StringListProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Exclude Qt Libraries
// -->
<StringListProperty
Name="QtDeployExcludeModules" DisplayName="Exclude Qt Libraries">
<StringListProperty.Description>
<sys:String>
<![CDATA[Qt libraries can be removed by passing their prepended by --no- ( --no-<name> ).]]>
</sys:String>
</StringListProperty.Description>
</StringListProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Set As Solution Deployment Content
// -->
<EnumProperty
Name="QtDeployVsContent" DisplayName="Set As Solution Deployment Content">
<EnumProperty.Description>
<sys:String>
<![CDATA[Mark deployed files as solution deployment content.]]>
</sys:String>
</EnumProperty.Description>
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="true" DisplayName="Enable"/>
</EnumProperty>
</Rule>
</ProjectSchemaDefinitions>

@ -0,0 +1,46 @@
<?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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qtmoc.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qtmoc.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,83 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild moc property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeMoc)' != ''"
Project="$(QtMsBuildProps_BeforeMoc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtMoc item template
// -->
<ItemDefinitionGroup>
<QtMoc>
<ExecutionDescription>moc %(Identity)</ExecutionDescription>
<QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
>$(QTDIR)</QTDIR>
<QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtInstallDir)</QTDIR>
<InputFile>%(FullPath)</InputFile>
<OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
>$(ProjectDir)GeneratedFiles\$(Configuration)\moc_%(Filename).cpp</OutputFile>
<QtMocDir Condition="'$(QtVsProjectSettings)' == 'true'"
>$(IntDir)moc\</QtMocDir>
<QtMocFileName Condition="'$(QtVsProjectSettings)' == 'true'"
>moc_%(Filename).cpp</QtMocFileName>
<DynamicSource>output</DynamicSource>
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
<Outputs>%(OutputFile)</Outputs>
<OverrideClCompile>false</OverrideClCompile>
</QtMoc>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterMoc)' != ''"
Project="$(QtMsBuildProps_AfterMoc)"/>
</Project>

@ -0,0 +1,510 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Definitions specific to moc
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeMoc)' != ''"
Project="$(QtMsBuildTargets_BeforeMoc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtBuildTargets>QtMoc;$(QtBuildTargets)</QtBuildTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup item type and property page
// -->
<Choose>
<When Condition="'$(QtVsProjectSettings)' == 'true' AND '$(QtVsProjectClProperties)' == 'true'">
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtmoc_v3.xml" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'false'">
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtmoc.xml" />
</ItemGroup>
</Otherwise>
</Choose>
<ItemGroup>
<AvailableItemName Include="QtMoc">
<Targets>Qt;_ClCompile</Targets>
</AvailableItemName>
</ItemGroup>
<PropertyGroup>
<QtMocRuleName>QtRule30_Moc</QtMocRuleName>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMocInit
/////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize default metadata
// -->
<Target Name="QtMocInit">
<!--// Initialize %(OutputFile) -->
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'true' AND '@(QtMoc)' != ''">
<QtMocAux Include="@(QtMoc)">
<OutputFile
>$([System.IO.Path]::Combine('%(QtMoc.QtMocDir)','%(QtMoc.QtMocFileName)'))</OutputFile>
</QtMocAux>
<QtMoc Remove="@(QtMoc)"/>
<QtMoc Include="@(QtMocAux)"/>
<QtMocAux Remove="@(QtMocAux)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Add moc output dir to C++ include path
// -->
<ItemGroup Condition="'@(QtMoc)' != ''">
<QtIncludePath Include="$([System.IO.Path]::GetDirectoryName('%(QtMoc.OutputFile)'))"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMocPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare to process sources
// -->
<Target Name="QtMocPrepare" DependsOnTargets="QtMocInit"
Inputs="%(QtMoc.Identity)" Outputs="@(QtMoc->'####### Don't skip this target #######')">
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtMocPrepare @(QtMoc)"/>
<PropertyGroup>
<selected_files>[@(selected_files->'%(Identity)','][')]</selected_files>
<file>[@(QtMoc->'%(Identity)')]</file>
<output_file>@(QtMoc->'%(OutputFile)')</output_file>
<is_selected Condition="$(selected_files.Contains('$(file)'))">true</is_selected>
<is_selected Condition="!$(selected_files.Contains('$(file)'))">false</is_selected>
</PropertyGroup>
<!--// Delete output file to force build of source if it was manually selected to build
// (e.g. by the 'Compile' option in the context menu for the file) -->
<Delete Files="$(output_file)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'" />
<!--// If a source was manually selected to build, remove all other sources -->
<ItemGroup Condition="'@(selected_files)' != ''">
<QtMoc Remove="@(QtMoc)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' != 'true'" />
</ItemGroup>
<!--// Remove sources excluded from build -->
<ItemGroup>
<QtMoc Remove="@(QtMoc)"
Condition="'$(SelectedFiles)' == '' AND '%(QtMoc.ExcludedFromBuild)' == 'true'"/>
</ItemGroup>
<PropertyGroup>
<selected_files/>
<file/>
<output_file/>
<is_selected/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMocSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputChanged flag if source file or dependencies have been modified
// -->
<Target Name="QtMocSetModified" DependsOnTargets="QtMocPrepare"
Condition="'@(QtMoc)' != ''"
Inputs="%(QtMoc.FullPath);%(QtMoc.AdditionalDependencies)" Outputs="@(QtMoc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtMocSetModified @(QtMoc)" />
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtMoc>
<InputChanged>$(input_changed)</InputChanged>
</QtMoc>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMocOverrideCpp
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<Import Project="qtmoc_cl.targets"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtMoc
/////////////////////////////////////////////////////////////////////////////////////////////////
// Process each source file and produce the corresponding QtWork items
// -->
<PropertyGroup>
<QtMocDependsOn>
QtPrepare;
QtMocPrepare;
QtMocSetModified;
QtMocOverrideCpp;
$(QtMocDependsOn)
</QtMocDependsOn>
</PropertyGroup>
<Target Name="QtMoc"
DependsOnTargets="$(QtMocDependsOn)"
BeforeTargets="$(QtMocBeforeTargets)" AfterTargets="$(QtMocAfterTargets)"
Condition="'@(QtMoc)' != ''"
Inputs="%(QtMoc.FullPath);%(QtMoc.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtMoc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## QtMoc @(QtMoc)" />
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert string lists in source item properties to lists of items
// -->
<Flatten Items="@(QtMoc)"
Metadata="InputFile;
OutputFile;
IncludePath;
MacFramework;
PreprocessOnly;
Define;
Undefine;
Metadata;
CompilerFlavor;
NoInclude;
PathPrefix;
ForceInclude;
PrependInclude;
Include;
NoNotesWarnings;
NoNotes;
NoWarnings;
IgnoreConflicts;
OptionsFile">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="InputFile;
OutputFile;
IncludePath;
MacFramework;
PathPrefix;
ForceInclude;
PrependInclude;
Include;
OptionsFile">
<Output
TaskParameter="Result" ItemName="options" />
</HostTranslatePaths>
<ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Escape double-quotes in macro definitions
// -->
<options>
<Value Condition="('%(Name)' == 'Define' OR '%(Name)' == 'Undefine')
AND ($([System.String]::Copy('%(Value)').Contains(' '))
OR $([System.String]::Copy('%(Value)').Contains('&quot;')))"
> &quot;$([System.String]::Copy('%(Value)').Replace('&quot;', '\&quot;'))&quot;</Value>
</options>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Remove quotes from all paths
// Escape trailing back-slash in paths
// Add quotes to paths containing spaces
// -->
<options>
<Value Condition="'%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath' OR '%(Name)' == 'MacFramework' OR '%(Name)' == 'PathPrefix'
OR '%(Name)' == 'ForceInclude' OR '%(Name)' == 'PrependInclude' OR '%(Name)' == 'Include'
OR '%(Name)' == 'OptionsFile'"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath' OR '%(Name)' == 'MacFramework' OR '%(Name)' == 'PathPrefix'
OR '%(Name)' == 'ForceInclude' OR '%(Name)' == 'PrependInclude' OR '%(Name)' == 'Include'
OR '%(Name)' == 'OptionsFile')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath' OR '%(Name)' == 'MacFramework' OR '%(Name)' == 'PathPrefix'
OR '%(Name)' == 'ForceInclude' OR '%(Name)' == 'PrependInclude' OR '%(Name)' == 'Include'
OR '%(Name)' == 'OptionsFile')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate tool command line arguments
// -->
<!--// [header-file] Header file to read from -->
<options>
<Value Condition="'%(Name)' == 'InputFile'">%(Value)</Value>
</options>
<!--// -o <file> Write output to file -->
<options>
<Value Condition="'%(Name)' == 'OutputFile'">-o %(Value)</Value>
</options>
<!--// -I <dir> Add dir to the include path for header files -->
<options>
<Value Condition="'%(Name)' == 'IncludePath'">-I%(Value)</Value>
</options>
<!--// -F <framework> Add macOS framework to the include path for headers -->
<options>
<Value Condition="'%(Name)' == 'MacFramework'">-F %(Value)</Value>
</options>
<!--// -E Preprocess only; do not generate meta object code -->
<options>
<Value Condition="'%(Name)' == 'PreprocessOnly' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'PreprocessOnly' AND '%(Value)' == 'true'">-E</Value>
</options>
<!--// -D <macro[=def]> Define macro, with optional definition -->
<options>
<Value Condition="'%(Name)' == 'Define'">-D%(Value)</Value>
</options>
<!--// -U <macro> Undefine macro-->
<options>
<Value Condition="'%(Name)' == 'Undefine'">-U%(Value)</Value>
</options>
<!--// -M <key=value> Add key/value pair to plugin meta data -->
<options>
<Value Condition="'%(Name)' == 'Metadata'">-M%(Value)</Value>
</options>
<!--// -compiler-flavor <flavor> Set the compiler flavor: either "msvc" or "unix" -->
<options>
<Value Condition="'%(Name)' == 'CompilerFlavor'">--compiler-flavor %(Value)</Value>
</options>
<!--// -i Do not generate an #include statement -->
<options>
<Value Condition="'%(Name)' == 'NoInclude' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoInclude' AND '%(Value)' == 'true'">-i</Value>
</options>
<!--// -p <path> Path prefix for included file -->
<options>
<Value Condition="'%(Name)' == 'PathPrefix'">-p%(Value)</Value>
</options>
<!--// -f <file> Force #include <file> (overwrite default) -->
<options>
<Value Condition="'%(Name)' == 'ForceInclude'">-f %(Value)</Value>
</options>
<!--// -b <file> Prepend #include <file> (preserve default include) -->
<options>
<Value Condition="'%(Name)' == 'PrependInclude'">-b %(Value)</Value>
</options>
<!--// -include <file> Parse <file> as an #include before the main source(s) -->
<options>
<Value Condition="'%(Name)' == 'Include'">--include %(Value)</Value>
</options>
<!--// -n <which> Do not display notes (-nn) or warnings (-nw) -->
<options>
<Value Condition="'%(Name)' == 'NoNotesWarnings'">-n%(Value)</Value>
</options>
<!--// -no-notes Do not display notes -->
<options>
<Value Condition="'%(Name)' == 'NoNotes' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoNotes' AND '%(Value)' == 'true'">--no-notes</Value>
</options>
<!--// -no-warnings Do not display warnings (implies -no-notes) -->
<options>
<Value Condition="'%(Name)' == 'NoWarnings' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoWarnings' AND '%(Value)' == 'true'">--no-warnings</Value>
</options>
<!--// -ignore-option-clashes Ignore all options that conflict with compilers -->
<options>
<Value Condition="'%(Name)' == 'IgnoreConflicts' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'IgnoreConflicts' AND '%(Value)' == 'true'"
>--ignore-option-clashes</Value>
</options>
<!--// [@option-file] Read additional options from option-file-->
<options>
<Value Condition="'%(Name)' == 'OptionsFile'">@%(Value)</Value>
</options>
</ItemGroup>
<PropertyGroup>
<options>@(options->'%(Value)', ' ')</options>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Aux properties
// -->
<PropertyGroup>
<!--// Force modified flag if source was manually selected to build -->
<input_changed Condition="'$(SelectedFiles)' != ''"
>true</input_changed>
<input_changed Condition="'$(SelectedFiles)' == ''"
>%(QtMoc.InputChanged)</input_changed>
<!--// Run work in parallel processes -->
<run_parallel Condition="'@(QtMoc)' != ''
AND '%(QtMoc.ParallelProcess)' == 'true'
AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<!--// Run work in single process -->
<run_single Condition="'@(QtMoc)' != ''
AND ('%(QtMoc.ParallelProcess)' != 'true'
OR '$(SelectedFiles)' != '')"
>true</run_single>
<!--// Get relative path to output -->
<output_relative
>$([MSBuild]::MakeRelative($(ProjectDir), %(QtMoc.OutputFile)).TrimStart('\'))</output_relative>
<!--// Get relative path to input -->
<input_relative
>$([MSBuild]::MakeRelative($(ProjectDir), %(QtMoc.InputFile)).TrimStart('\'))</input_relative>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Create work item
// -->
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtMoc)">
<WorkType>moc</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtToolsPath)/moc</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
>%(QtMoc.QTDIR)\bin\moc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtMoc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
<InputChanged>$(input_changed)</InputChanged>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
<!--
///////////////////////////////////////////////////////////////////////////////////////////
// C++ dynamic source -->
<ClCompile Condition="'%(QtMoc.DynamicSource)' == 'output'">$(output_relative)</ClCompile>
<ClCompile Condition="'%(QtMoc.DynamicSource)' == 'input'">$(input_relative)</ClCompile>
</QtWork>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<options/>
<dependencies_changed/>
<input_changed/>
<run_parallel/>
<run_single/>
<output_relative/>
<input_relative/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<options Remove="@(options)"/>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterMoc)' != ''"
Project="$(QtMsBuildTargets_AfterMoc)"/>
</Project>

@ -0,0 +1,316 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Defines the fields included in the moc property page, as well as any
// other metadata associated to QtMoc items
// -->
<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="QtRule30_Moc"
PageTemplate="tool"
DisplayName="Qt Meta-Object Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtMoc" />
</Rule.DataSource>
<Rule.Categories>
<Category
Name="General">
<Category.DisplayName>
<sys:String>moc.exe</sys:String>
</Category.DisplayName>
</Category>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtMoc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False"/>
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Input File"
Description="Specifies the full path of the input file. (&lt;file&gt;)"
Switch="&quot;[value]&quot;" />
<StringProperty
Name="OutputFile"
Category="General"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Output File"
Description="Specifies the full path of the output file. (-o &lt;file&gt;)"
Switch="-o &quot;[value]&quot;" />
<StringListProperty
Name="IncludePath"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Include Path"
Description=
"Add &lt;dir&gt; to the include path for header files; separate with semicolons if more than one.
(-I&lt;dir&gt;)"
Switch="&quot;-I[value]&quot;" />
<StringProperty
Name="MacFramework"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="macOS Framework"
Description=
"Add macOS &lt;framework&gt; to the include path for header files. (-F &lt;framework&gt;)"
Switch="-F &quot;[value]&quot;"
Visible="False"/>
<BoolProperty
Name="PreprocessOnly"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Preprocess Only"
Description="Preprocess only; do not generate meta object code. (-E)"
Switch="-E"
Visible="False"/>
<StringListProperty
Name="Define"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Macro Definitions"
Description=
"Define macro, with optional definition; separate with semicolons if more than one.
(-D&lt;macro&gt;[=&lt;def&gt;])"
Switch="-D " />
<StringListProperty
Name="Undefine"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Undefine Macro Definitions"
Description="Undefine macro; separate with semicolons if more than one. (-U&lt;macro&gt;)"
Switch="-U[value]" />
<StringListProperty
Name="Metadata"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Plugin Meta Data"
Description=
"Add key/value pair to plugin meta data; separate with semicolons if more than one.
(-M&lt;key=value&gt;)"
Switch="-M[value]" />
<StringProperty
Name="CompilerFlavor"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Compiler Flavor"
Description=
"Set the compiler &lt;flavor&gt;: either &quot;msvc&quot; or &quot;unix&quot;.
(--compiler-flavor &lt;flavor&gt;)"
Switch="--compiler-flavor [value]"/>
<BoolProperty
Name="NoInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Include"
Description="Do not generate an #include statement. (-i)"
Switch="-i"/>
<StringProperty
Name="PathPrefix"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Path Prefix"
Description="&lt;path&gt; prefix for included file. (-p &lt;path&gt;)"
Switch="-p [value]"/>
<StringListProperty
Name="ForceInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Force Include"
Description=
"Force #include &lt;file&gt; (overwrite default); separate with semicolons if more than one.
(-f &lt;file&gt;)"
Switch="-f &quot;[value]&quot;"/>
<StringListProperty
Name="PrependInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Prepend Include"
Description=
"Prepend #include &lt;file&gt; (preserve default); separate with semicolons if more than one.
(-b &lt;file&gt;)"
Switch="-b &quot;[value]&quot;"/>
<StringListProperty
Name="Include"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Include"
Description=
"Parse &lt;file&gt; as an #include before the main source(s); separate with semicolons if more
than one. (--include &lt;file&gt;)"
Switch="--include &quot;[value]&quot;"/>
<StringListProperty
Name="NoNotesWarnings"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Notes Or Warnings"
Description=
"Do not display notes (-nn) or warnings (-nw); Compatibility option; separate with semicolons if
more than one. (-n&lt;n|w&gt;)"
Switch="-n[value]"
Visible="False"/>
<BoolProperty
Name="NoNotes"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Notes"
Description="Do not display notes. (--no-notes)"
Switch="--no-notes"/>
<BoolProperty
Name="NoWarnings"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Warnings"
Description="Do not display warnings (implies --no-notes). (--no-warnings)"
Switch="--no-warnings"/>
<BoolProperty
Name="IgnoreConflicts"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Ignore Conflicts"
Description=
"Ignore all options that conflict with compilers, like -pthread conflicting with moc's -p option.
(--ignore-option-clashes)"
Switch="--ignore-option-clashes"/>
<StringProperty
Name="OptionsFile"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Options File"
Description="Read additional command-line options from &lt;file&gt;. (@&lt;file&gt;)"
Switch="&quot;@[value]&quot;" />
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtMocBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtMocBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtMocAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtMocAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic C++ Source"
Description="Add file to list of C++ sources during build.">
<EnumValue
Name="output"
DisplayName="Output File"
Description="Use output as dynamic C++ source."/>
<EnumValue
Name="input"
DisplayName="Input File"
Description="Use input as dynamic C++ source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
</Rule>
<ItemType
Name="QtMoc"
DisplayName="Qt Meta-Object Compiler (moc)" />
<ContentType
Name="QtMoc"
DisplayName="Qt Meta-Object Compiler (moc)"
ItemType="QtMoc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,203 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="QtMocOverrideCpp" DependsOnTargets="QtMocPrepare;QtGetDefaultClCompile"
Inputs="%(QtMoc.Identity)" Outputs="@(QtMoc->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtMocOverrideCpp @(QtMoc)" />
<PropertyGroup Condition="'$(QtVsProjectClProperties)' == 'true'">
<override_cl_compile>%(QtMoc.OverrideClCompile)</override_cl_compile>
</PropertyGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'extend'">
<QtMoc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)');%(QtMoc.AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)');%(QtMoc.AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)');%(QtMoc.PreprocessorDefinitions)</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)');%(QtMoc.UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<DisableSpecificWarnings>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)');%(QtMoc.DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)');%(QtMoc.ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedUsingFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)');%(QtMoc.ForcedUsingFiles)</ForcedUsingFiles>
<TreatSpecificWarningsAsErrors>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)');%(QtMoc.TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
<AdditionalCppOptions
Condition="'%(QtMoc.AdditionalCppOptions)' != ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalOptions)') %(QtMoc.AdditionalCppOptions)</AdditionalCppOptions>
<AdditionalCppOptions
Condition="'%(QtMoc.AdditionalCppOptions)' == ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalOptions)')</AdditionalCppOptions>
</QtMoc>
<QtMoc>
<IncludePath>%(QtMoc.AdditionalIncludeDirectories)</IncludePath>
<Define>%(QtMoc.PreprocessorDefinitions)</Define>
<Undefine>%(QtMoc.UndefinePreprocessorDefinitions)</Undefine>
</QtMoc>
</ItemGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'replace'">
<QtMoc>
<IncludePath Condition="'%(QtMoc.AdditionalIncludeDirectories)' != ''"
>%(QtMoc.AdditionalIncludeDirectories)</IncludePath>
<IncludePath Condition="'%(QtMoc.AdditionalIncludeDirectories)' == ''"
>@(ClCompile->
WithMetadataValue('Identity', 'DefaultClCompile')->
'%(AdditionalIncludeDirectories)')</IncludePath>
<Define Condition="'%(QtMoc.PreprocessorDefinitions)' != ''"
>%(QtMoc.PreprocessorDefinitions)</Define>
<Define Condition="'%(QtMoc.PreprocessorDefinitions)' == ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(PreprocessorDefinitions)')</Define>
<Undefine Condition="'%(QtMoc.UndefinePreprocessorDefinitions)' == ''"
>%(QtMoc.UndefinePreprocessorDefinitions)</Undefine>
<Undefine Condition="'%(QtMoc.UndefinePreprocessorDefinitions)' != ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(UndefinePreprocessorDefinitions)')</Undefine>
</QtMoc>
</ItemGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'false'">
<QtMoc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories Condition="'%(QtMoc.AdditionalIncludeDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)')</AdditionalIncludeDirectories>
<AdditionalUsingDirectories Condition="'%(QtMoc.AdditionalUsingDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)')</AdditionalUsingDirectories>
<DebugInformationFormat Condition="'%(QtMoc.DebugInformationFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DebugInformationFormat)')</DebugInformationFormat>
<SupportJustMyCode Condition="'%(QtMoc.SupportJustMyCode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SupportJustMyCode)')</SupportJustMyCode>
<CompileAsManaged Condition="'%(QtMoc.CompileAsManaged)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsManaged)')</CompileAsManaged>
<CompileAsWinRT Condition="'%(QtMoc.CompileAsWinRT)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsWinRT)')</CompileAsWinRT>
<SuppressStartupBanner Condition="'%(QtMoc.SuppressStartupBanner)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SuppressStartupBanner)')</SuppressStartupBanner>
<WarningLevel Condition="'%(QtMoc.WarningLevel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningLevel)')</WarningLevel>
<TreatWarningAsError Condition="'%(QtMoc.TreatWarningAsError)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWarningAsError)')</TreatWarningAsError>
<WarningVersion Condition="'%(QtMoc.WarningVersion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningVersion)')</WarningVersion>
<DiagnosticsFormat Condition="'%(QtMoc.DiagnosticsFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DiagnosticsFormat)')</DiagnosticsFormat>
<SDLCheck Condition="'%(QtMoc.SDLCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SDLCheck)')</SDLCheck>
<MultiProcessorCompilation Condition="'%(QtMoc.MultiProcessorCompilation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MultiProcessorCompilation)')</MultiProcessorCompilation>
<Optimization Condition="'%(QtMoc.Optimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(Optimization)')</Optimization>
<InlineFunctionExpansion Condition="'%(QtMoc.InlineFunctionExpansion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(InlineFunctionExpansion)')</InlineFunctionExpansion>
<IntrinsicFunctions Condition="'%(QtMoc.IntrinsicFunctions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IntrinsicFunctions)')</IntrinsicFunctions>
<FavorSizeOrSpeed Condition="'%(QtMoc.FavorSizeOrSpeed)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FavorSizeOrSpeed)')</FavorSizeOrSpeed>
<OmitFramePointers Condition="'%(QtMoc.OmitFramePointers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitFramePointers)')</OmitFramePointers>
<EnableFiberSafeOptimizations Condition="'%(QtMoc.EnableFiberSafeOptimizations)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableFiberSafeOptimizations)')</EnableFiberSafeOptimizations>
<WholeProgramOptimization Condition="'%(QtMoc.WholeProgramOptimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WholeProgramOptimization)')</WholeProgramOptimization>
<PreprocessorDefinitions Condition="'%(QtMoc.PreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)')</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions Condition="'%(QtMoc.UndefinePreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)')</UndefinePreprocessorDefinitions>
<UndefineAllPreprocessorDefinitions Condition="'%(QtMoc.UndefineAllPreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefineAllPreprocessorDefinitions)')</UndefineAllPreprocessorDefinitions>
<IgnoreStandardIncludePath Condition="'%(QtMoc.IgnoreStandardIncludePath)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IgnoreStandardIncludePath)')</IgnoreStandardIncludePath>
<PreprocessToFile Condition="'%(QtMoc.PreprocessToFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessToFile)')</PreprocessToFile>
<PreprocessSuppressLineNumbers Condition="'%(QtMoc.PreprocessSuppressLineNumbers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessSuppressLineNumbers)')</PreprocessSuppressLineNumbers>
<PreprocessKeepComments Condition="'%(QtMoc.PreprocessKeepComments)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessKeepComments)')</PreprocessKeepComments>
<StringPooling Condition="'%(QtMoc.StringPooling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StringPooling)')</StringPooling>
<MinimalRebuild Condition="'%(QtMoc.MinimalRebuild)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MinimalRebuild)')</MinimalRebuild>
<ExceptionHandling Condition="'%(QtMoc.ExceptionHandling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExceptionHandling)')</ExceptionHandling>
<SmallerTypeCheck Condition="'%(QtMoc.SmallerTypeCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SmallerTypeCheck)')</SmallerTypeCheck>
<BasicRuntimeChecks Condition="'%(QtMoc.BasicRuntimeChecks)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BasicRuntimeChecks)')</BasicRuntimeChecks>
<RuntimeLibrary Condition="'%(QtMoc.RuntimeLibrary)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeLibrary)')</RuntimeLibrary>
<StructMemberAlignment Condition="'%(QtMoc.StructMemberAlignment)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StructMemberAlignment)')</StructMemberAlignment>
<BufferSecurityCheck Condition="'%(QtMoc.BufferSecurityCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BufferSecurityCheck)')</BufferSecurityCheck>
<ControlFlowGuard Condition="'%(QtMoc.ControlFlowGuard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ControlFlowGuard)')</ControlFlowGuard>
<FunctionLevelLinking Condition="'%(QtMoc.FunctionLevelLinking)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FunctionLevelLinking)')</FunctionLevelLinking>
<EnableParallelCodeGeneration Condition="'%(QtMoc.EnableParallelCodeGeneration)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableParallelCodeGeneration)')</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet Condition="'%(QtMoc.EnableEnhancedInstructionSet)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableEnhancedInstructionSet)')</EnableEnhancedInstructionSet>
<FloatingPointModel Condition="'%(QtMoc.FloatingPointModel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointModel)')</FloatingPointModel>
<FloatingPointExceptions Condition="'%(QtMoc.FloatingPointExceptions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointExceptions)')</FloatingPointExceptions>
<CreateHotpatchableImage Condition="'%(QtMoc.CreateHotpatchableImage)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CreateHotpatchableImage)')</CreateHotpatchableImage>
<DisableLanguageExtensions Condition="'%(QtMoc.DisableLanguageExtensions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableLanguageExtensions)')</DisableLanguageExtensions>
<ConformanceMode Condition="'%(QtMoc.ConformanceMode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ConformanceMode)')</ConformanceMode>
<TreatWChar_tAsBuiltInType Condition="'%(QtMoc.TreatWChar_tAsBuiltInType)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWChar_tAsBuiltInType)')</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope Condition="'%(QtMoc.ForceConformanceInForLoopScope)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForceConformanceInForLoopScope)')</ForceConformanceInForLoopScope>
<RemoveUnreferencedCodeData Condition="'%(QtMoc.RemoveUnreferencedCodeData)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RemoveUnreferencedCodeData)')</RemoveUnreferencedCodeData>
<EnforceTypeConversionRules Condition="'%(QtMoc.EnforceTypeConversionRules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnforceTypeConversionRules)')</EnforceTypeConversionRules>
<RuntimeTypeInfo Condition="'%(QtMoc.RuntimeTypeInfo)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeTypeInfo)')</RuntimeTypeInfo>
<OpenMPSupport Condition="'%(QtMoc.OpenMPSupport)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OpenMPSupport)')</OpenMPSupport>
<LanguageStandard Condition="'%(QtMoc.LanguageStandard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(LanguageStandard)')</LanguageStandard>
<EnableModules Condition="'%(QtMoc.EnableModules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableModules)')</EnableModules>
<PrecompiledHeader Condition="'%(QtMoc.PrecompiledHeader)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeader)')</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'%(QtMoc.PrecompiledHeaderFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderFile)')</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'%(QtMoc.PrecompiledHeaderOutputFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderOutputFile)')</PrecompiledHeaderOutputFile>
<ExpandAttributedSource Condition="'%(QtMoc.ExpandAttributedSource)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExpandAttributedSource)')</ExpandAttributedSource>
<AssemblerOutput Condition="'%(QtMoc.AssemblerOutput)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerOutput)')</AssemblerOutput>
<UseUnicodeForAssemblerListing Condition="'%(QtMoc.UseUnicodeForAssemblerListing)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseUnicodeForAssemblerListing)')</UseUnicodeForAssemblerListing>
<AssemblerListingLocation Condition="'%(QtMoc.AssemblerListingLocation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerListingLocation)')</AssemblerListingLocation>
<ObjectFileName Condition="'%(QtMoc.ObjectFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ObjectFileName)')</ObjectFileName>
<ProgramDataBaseFileName Condition="'%(QtMoc.ProgramDataBaseFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ProgramDataBaseFileName)')</ProgramDataBaseFileName>
<GenerateXMLDocumentationFiles Condition="'%(QtMoc.GenerateXMLDocumentationFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(GenerateXMLDocumentationFiles)')</GenerateXMLDocumentationFiles>
<XMLDocumentationFileName Condition="'%(QtMoc.XMLDocumentationFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(XMLDocumentationFileName)')</XMLDocumentationFileName>
<BrowseInformation Condition="'%(QtMoc.BrowseInformation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformation)')</BrowseInformation>
<BrowseInformationFile Condition="'%(QtMoc.BrowseInformationFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformationFile)')</BrowseInformationFile>
<CallingConvention Condition="'%(QtMoc.CallingConvention)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CallingConvention)')</CallingConvention>
<CompileAs Condition="'%(QtMoc.CompileAs)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAs)')</CompileAs>
<DisableSpecificWarnings Condition="'%(QtMoc.DisableSpecificWarnings)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)')</DisableSpecificWarnings>
<ForcedIncludeFiles Condition="'%(QtMoc.ForcedIncludeFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)')</ForcedIncludeFiles>
<ForcedUsingFiles Condition="'%(QtMoc.ForcedUsingFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)')</ForcedUsingFiles>
<ShowIncludes Condition="'%(QtMoc.ShowIncludes)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ShowIncludes)')</ShowIncludes>
<UseFullPaths Condition="'%(QtMoc.UseFullPaths)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseFullPaths)')</UseFullPaths>
<OmitDefaultLibName Condition="'%(QtMoc.OmitDefaultLibName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitDefaultLibName)')</OmitDefaultLibName>
<ErrorReporting Condition="'%(QtMoc.ErrorReporting)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ErrorReporting)')</ErrorReporting>
<TreatSpecificWarningsAsErrors Condition="'%(QtMoc.TreatSpecificWarningsAsErrors)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)')</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
<IncludePath
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalIncludeDirectories)')</IncludePath>
<Define
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(PreprocessorDefinitions)')</Define>
<Undefine
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(UndefinePreprocessorDefinitions)')</Undefine>
<AdditionalCppOptions
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalOptions)')</AdditionalCppOptions>
</QtMoc>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<override_cl_compile/>
</PropertyGroup>
</Target>
</Project>

@ -0,0 +1,646 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<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="QtRule30_Moc"
PageTemplate="tool"
DisplayName="Qt Meta-Object Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtMoc" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="moc"/>
<Category Name="MocCpp" DisplayName="Override C/C++"/>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtMoc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False"/>
<StringProperty
Name="QtMocDir"
Category="General"
DisplayName="Output Directory"
Description="Specifies the path of the generated moc output directory."/>
<StringProperty
Name="QtMocFileName"
Category="General"
DisplayName="Output File Name"
Description="Specifies the name of the generated moc output file."/>
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Visible="false"/>
<StringProperty
Name="InputFile"
DisplayName="Input File"
Visible="false"/>
<StringProperty
Name="OutputFile"
DisplayName="Output File"
Visible="false"/>
<StringProperty
Name="MacFramework"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="macOS Framework"
Description=
"Add macOS &lt;framework&gt; to the include path for header files. (-F &lt;framework&gt;)"
Switch="-F &quot;[value]&quot;"
Visible="False"/>
<BoolProperty
Name="PreprocessOnly"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Preprocess Only"
Description="Preprocess only; do not generate meta object code. (-E)"
Switch="-E"
Visible="False"/>
<StringListProperty
Name="Metadata"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Plugin Meta Data"
Description=
"Add key/value pair to plugin meta data; separate with semicolons if more than one.
(-M&lt;key=value&gt;)"
Switch="-M[value]" />
<StringProperty
Name="CompilerFlavor"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Compiler Flavor"
Description=
"Set the compiler &lt;flavor&gt;: either &quot;msvc&quot; or &quot;unix&quot;.
(--compiler-flavor &lt;flavor&gt;)"
Switch="--compiler-flavor [value]"/>
<BoolProperty
Name="NoInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Include"
Description="Do not generate an #include statement. (-i)"
Switch="-i"/>
<StringProperty
Name="PathPrefix"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Path Prefix"
Description="&lt;path&gt; prefix for included file. (-p &lt;path&gt;)"
Switch="-p [value]"/>
<StringListProperty
Name="ForceInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Force Include"
Description=
"Force #include &lt;file&gt; (overwrite default); separate with semicolons if more than one.
(-f &lt;file&gt;)"
Switch="-f &quot;[value]&quot;"/>
<StringListProperty
Name="PrependInclude"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Prepend Include"
Description=
"Prepend #include &lt;file&gt; (preserve default); separate with semicolons if more than one.
(-b &lt;file&gt;)"
Switch="-b &quot;[value]&quot;"/>
<StringListProperty
Name="Include"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Include"
Description=
"Parse &lt;file&gt; as an #include before the main source(s); separate with semicolons if more
than one. (--include &lt;file&gt;)"
Switch="--include &quot;[value]&quot;"/>
<StringListProperty
Name="NoNotesWarnings"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Notes Or Warnings"
Description=
"Do not display notes (-nn) or warnings (-nw); Compatibility option; separate with semicolons if
more than one. (-n&lt;n|w&gt;)"
Switch="-n[value]"
Visible="False"/>
<BoolProperty
Name="NoNotes"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Notes"
Description="Do not display notes. (--no-notes)"
Switch="--no-notes"/>
<BoolProperty
Name="NoWarnings"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="No Warnings"
Description="Do not display warnings (implies --no-notes). (--no-warnings)"
Switch="--no-warnings"/>
<BoolProperty
Name="IgnoreConflicts"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Ignore Conflicts"
Description=
"Ignore all options that conflict with compilers, like -pthread conflicting with moc's -p option.
(--ignore-option-clashes)"
Switch="--ignore-option-clashes"/>
<StringProperty
Name="OptionsFile"
HelpUrl="http://doc.qt.io/qt-5/moc.html"
DisplayName="Options File"
Description="Read additional command-line options from &lt;file&gt;. (@&lt;file&gt;)"
Switch="&quot;@[value]&quot;" />
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtMocBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtMocBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtMocAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtMocAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic C++ Source"
Description="Add file to list of C++ sources during build.">
<EnumValue
Name="output"
DisplayName="Output File"
Description="Use output as dynamic C++ source."/>
<EnumValue
Name="input"
DisplayName="Input File"
Description="Use input as dynamic C++ source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
<StringListProperty Name="IncludePath" Visible="false"/>
<StringListProperty Name="Define" Visible="false"/>
<StringListProperty Name="Undefine" Visible="false"/>
<EnumProperty
Name="OverrideClCompile"
Category="MocCpp"
DisplayName="Override C/C++ Properties"
Description="Define how C/C++ properties are redefined for moc">
<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>
<!-- BEGIN Generated Text -->
<StringProperty Name="QtCppHeader_General" Category="MocCpp" ReadOnly="true" DisplayName="########## General ##############################" />
<StringListProperty Subtype="folder" Name="AdditionalIncludeDirectories" DisplayName="Additional Include Directories" Description="(overrides C/C++ property) Specifies one or more directories to add to the include path; separate with semi-colons if more than one. (/I[path])" Category="MocCpp" Switch="I" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalIncludeDirectories">
</StringListProperty>
<StringListProperty Subtype="folder" Name="AdditionalUsingDirectories" DisplayName="Additional #using Directories" Description="(overrides C/C++ property) Specifies one or more directories (separate directory names with a semicolon) to be searched to resolve names passed to a #using directive. (/AI[path])" Category="MocCpp" Switch="AI" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalUsingDirectories">
</StringListProperty>
<EnumProperty Name="DebugInformationFormat" DisplayName="Debug Information Format" Description="(overrides C/C++ property) Specifies the type of debugging information generated by the compiler. This requires compatible linker settings. (/Z7, /Zi, /ZI)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.DebugInformationFormat">
<EnumValue Name="None" Switch="" DisplayName="None" Description="Produces no debugging information, so compilation may be faster.">
</EnumValue>
<EnumValue Name="OldStyle" Switch="Z7" DisplayName="C7 compatible" Description="Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB).">
</EnumValue>
<EnumValue Name="ProgramDatabase" Switch="Zi" DisplayName="Program Database" Description="Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables, as well as functions and line numbers. ">
</EnumValue>
<EnumValue Name="EditAndContinue" Switch="ZI" DisplayName="Program Database for Edit And Continue" Description="Produces a program database, as described above, in a format that supports the Edit and Continue feature.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SupportJustMyCode" DisplayName="Support Just My Code Debugging" Description="(overrides C/C++ property) Adds supporting code for enabling Just My Code debugging in this compilation unit. (/JMC)" Category="MocCpp" Switch="JMC" F1Keyword="VC.Project.VCCLCompilerTool.SupportJustMyCode">
</BoolProperty>
<EnumProperty Name="CompileAsManaged" DisplayName="Common Language RunTime Support" Description="(overrides C/C++ property) Use the .NET runtime service. This switch is incompatible with some other switches; see the documentation on the /clr family of switches for details." Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsManaged">
<EnumValue Name="false" Switch="" DisplayName="No Common Language RunTime Support" Description="No Common Language RunTime Support">
</EnumValue>
<EnumValue Name="true" Switch="clr" DisplayName="Common Language RunTime Support" Description="Creates metadata for your application that can be consumed by other CLR applications, and allows your application to consume types and data in the metadata of other CLR components.">
</EnumValue>
<EnumValue Name="Pure" Switch="clr:pure" DisplayName="Pure MSIL Common Language RunTime Support" Description="Produces an MSIL-only output file with no native executable code, although it can contain native types compiled to MSIL.">
</EnumValue>
<EnumValue Name="Safe" Switch="clr:safe" DisplayName="Safe MSIL Common Language RunTime Support" Description="Produces an MSIL-only (no native executable code) and verifiable output file.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="CompileAsWinRT" DisplayName="Consume Windows Runtime Extension" Description="(overrides C/C++ property) Consume the Windows Run Time languages extensions. (/ZW)" Category="MocCpp" Switch="ZW" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsWinRT">
</BoolProperty>
<BoolProperty Name="SuppressStartupBanner" DisplayName="Suppress Startup Banner" Description="(overrides C/C++ property) Suppresses the display of the sign-on banner when the compiler starts up and display of informational messages during compiling." Category="MocCpp" Switch="nologo" F1Keyword="VC.Project.VCCLCompilerTool.SuppressStartupBanner">
</BoolProperty>
<EnumProperty Name="WarningLevel" DisplayName="Warning Level" Description="(overrides C/C++ property) Select how strict you want the compiler to be about code errors. (/W0 - /W4)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.WarningLevel">
<EnumValue Name="TurnOffAllWarnings" Switch="W0" DisplayName="Turn Off All Warnings" Description="Level 0 disables all warnings.">
</EnumValue>
<EnumValue Name="Level1" Switch="W1" DisplayName="Level1" Description="Level 1 displays severe warnings. Level 1 is the default warning level at the command line.">
</EnumValue>
<EnumValue Name="Level2" Switch="W2" DisplayName="Level2" Description="Level 2 displays all level 1 warnings and warnings less severe than level 1.">
</EnumValue>
<EnumValue Name="Level3" Switch="W3" DisplayName="Level3" Description="Level 3 displays all level 2 warnings and all other warnings recommended for production purposes.">
</EnumValue>
<EnumValue Name="Level4" Switch="W4" DisplayName="Level4" Description="Level 4 displays all level 3 warnings plus informational warnings, which in most cases can be safely ignored.">
</EnumValue>
<EnumValue Name="EnableAllWarnings" Switch="Wall" DisplayName="EnableAllWarnings" Description="Enables all warnings, including those disabled by default.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="WX-" Name="TreatWarningAsError" DisplayName="Treat Warnings As Errors" Description="(overrides C/C++ property) Treats all compiler warnings as errors. For a new project, it may be best to use /WX in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects." Category="MocCpp" Switch="WX" F1Keyword="VC.Project.VCCLCompilerTool.WarnAsError">
</BoolProperty>
<StringProperty Name="WarningVersion" DisplayName="Warning Version" Description="(overrides C/C++ property) Hide warnings introduced after a specific version of the compiler. (/Wv:xx[.yy[.zzzzz]])" Category="MocCpp" Switch="Wv:" F1Keyword="VC.Project.VCCLCompilerTool.WarningVersion">
</StringProperty>
<EnumProperty Name="DiagnosticsFormat" DisplayName="Diagnostics Format" Description="(overrides C/C++ property) Enables rich diagnostics, with column information and source context in diagnostic messages." Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.DiagnosticsFormat">
<EnumValue Name="Caret" Switch="diagnostics:caret" DisplayName="Caret" Description="Provides column information in the diagnostic message, as well as outputting the relevant line of source code with a caret indicating the offending column.">
</EnumValue>
<EnumValue Name="Column" Switch="diagnostics:column" DisplayName="Column Info" Description="Additionally provides the column number within the line where the diagnostic is issued, where applicable.">
</EnumValue>
<EnumValue Name="Classic" Switch="diagnostics:classic" DisplayName="Classic" Description="Retains the prior, concise diagnostic messages with the line number.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="sdl-" Name="SDLCheck" DisplayName="SDL checks" Description="(overrides C/C++ property) Additional Security Development Lifecycle (SDL) recommended checks; includes enabling additional secure code generation features and enables extra security-relevant warnings as errors. (/sdl, /sdl-)" Category="MocCpp" Switch="sdl" F1Keyword="VC.Project.VCCLCompilerTool.SDLCheck">
</BoolProperty>
<BoolProperty Name="MultiProcessorCompilation" DisplayName="Multi-processor Compilation" Description="(overrides C/C++ property) Multi-processor Compilation." Category="MocCpp" Switch="MP" F1Keyword="VC.Project.VCCLCompilerTool.MultiProcessorCompilation">
<Argument Property="ProcessorNumber" IsRequired="false" />
</BoolProperty>
<StringProperty Name="QtCppHeader_Optimization" Category="MocCpp" ReadOnly="true" DisplayName="########## Optimization ##############################" />
<EnumProperty Name="Optimization" DisplayName="Optimization" Description="(overrides C/C++ property) Select option for code optimization; choose Custom to use specific optimization options. (/Od, /O1, /O2)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.Optimization">
<EnumValue Name="Custom" Switch="" DisplayName="Custom" Description="Custom optimization.">
</EnumValue>
<EnumValue Name="Disabled" Switch="Od" DisplayName="Disabled" Description="Disable optimization.">
</EnumValue>
<EnumValue Name="MinSpace" Switch="O1" DisplayName="Maximum Optimization (Favor Size)" Description="Equivalent to /Og /Os /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="MaxSpeed" Switch="O2" DisplayName="Maximum Optimization (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="Full" Switch="Ox" DisplayName="Optimizations (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2">
</EnumValue>
</EnumProperty>
<EnumProperty Name="InlineFunctionExpansion" DisplayName="Inline Function Expansion" Description="(overrides C/C++ property) Select the level of inline function expansion for the build. (/Ob1, /Ob2)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.InlineFunctionExpansion">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="Disabled" Switch="Ob0" DisplayName="Disabled" Description="Disables inline expansion, which is on by default.">
</EnumValue>
<EnumValue Name="OnlyExplicitInline" Switch="Ob1" DisplayName="Only __inline" Description="Expands only functions marked as inline, __inline, __forceinline or __inline or, in a C++ member function, defined within a class declaration.">
</EnumValue>
<EnumValue Name="AnySuitable" Switch="Ob2" DisplayName="Any Suitable" Description="Expands functions marked as inline or __inline and any other function that the compiler chooses (expansion occurs at the compiler's discretion, often referred to as auto-inlining).">
</EnumValue>
</EnumProperty>
<BoolProperty Name="IntrinsicFunctions" DisplayName="Enable Intrinsic Functions" Description="(overrides C/C++ property) Enables intrinsic functions. Using intrinsic functions generates faster, but possibly larger, code. (/Oi)" Category="MocCpp" Switch="Oi" F1Keyword="VC.Project.VCCLCompilerTool.EnableIntrinsicFunctions">
</BoolProperty>
<EnumProperty Name="FavorSizeOrSpeed" DisplayName="Favor Size Or Speed" Description="(overrides C/C++ property) Whether to favor code size or code speed; 'Global Optimization' must be turned on. (/Ot, /Os)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.FavorSizeOrSpeed">
<EnumValue Name="Size" Switch="Os" DisplayName="Favor small code" Description="Favor Small Code. Minimizes the size of EXEs and DLLs by instructing the compiler to favor size over speed.">
</EnumValue>
<EnumValue Name="Speed" Switch="Ot" DisplayName="Favor fast code" Description="Favor Fast Code. Maximizes the speed of EXEs and DLLs by instructing the compiler to favor speed over size. (This is the default.) ">
</EnumValue>
<EnumValue Name="Neither" Switch="" DisplayName="Neither" Description="No size nor speed optimization.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Oy-" Name="OmitFramePointers" DisplayName="Omit Frame Pointers" Description="(overrides C/C++ property) Suppresses creation of frame pointers on the call stack." Category="MocCpp" Switch="Oy" F1Keyword="VC.Project.VCCLCompilerTool.OmitFramePointers">
</BoolProperty>
<BoolProperty Name="EnableFiberSafeOptimizations" DisplayName="Enable Fiber-Safe Optimizations" Description="(overrides C/C++ property) Enables memory space optimization when using fibers and thread local storage access. (/GT)" Category="MocCpp" Switch="GT" F1Keyword="VC.Project.VCCLCompilerTool.EnableFiberSafeOptimizations">
</BoolProperty>
<BoolProperty Name="WholeProgramOptimization" DisplayName="Whole Program Optimization" Description="(overrides C/C++ property) Enables cross-module optimizations by delaying code generation to link time; requires that linker option 'Link Time Code Generation' be turned on. (/GL)" Category="MocCpp" Switch="GL" F1Keyword="VC.Project.VCCLWCECompilerTool.WholeProgramOptimization">
</BoolProperty>
<StringProperty Name="QtCppHeader_Preprocessor" Category="MocCpp" ReadOnly="true" DisplayName="########## Preprocessor ##############################" />
<StringListProperty Name="PreprocessorDefinitions" DisplayName="Preprocessor Definitions" Description="(overrides C/C++ property) Defines a preprocessing symbols for your source file." Category="MocCpp" Switch="D " F1Keyword="VC.Project.VCCLCompilerTool.PreprocessorDefinitions">
</StringListProperty>
<StringListProperty Name="UndefinePreprocessorDefinitions" DisplayName="Undefine Preprocessor Definitions" Description="(overrides C/C++ property) Specifies one or more preprocessor undefines. (/U[macro])" Category="MocCpp" Switch="U" F1Keyword="VC.Project.VCCLCompilerTool.UndefinePreprocessorDefinitions">
</StringListProperty>
<BoolProperty Name="UndefineAllPreprocessorDefinitions" DisplayName="Undefine All Preprocessor Definitions" Description="(overrides C/C++ property) Undefine all previously defined preprocessor values. (/u)" Category="MocCpp" Switch="u" F1Keyword="VC.Project.VCCLCompilerTool.UndefineAllPreprocessorDefinitions">
</BoolProperty>
<BoolProperty Name="IgnoreStandardIncludePath" DisplayName="Ignore Standard Include Paths" Description="(overrides C/C++ property) Prevents the compiler from searching for include files in directories specified in the INCLUDE environment variables." Category="MocCpp" Switch="X" F1Keyword="VC.Project.VCCLCompilerTool.IgnoreStandardIncludePath">
</BoolProperty>
<BoolProperty Name="PreprocessToFile" DisplayName="Preprocess to a File" Description="(overrides C/C++ property) Preprocesses C and C++ source files and writes the preprocessed output to a file. This option suppresses compilation, thus it does not produce an .obj file." Category="MocCpp" Switch="P" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFile">
</BoolProperty>
<BoolProperty Name="PreprocessSuppressLineNumbers" DisplayName="Preprocess Suppress Line Numbers" Description="(overrides C/C++ property) Preprocess without #line directives." Category="MocCpp" Switch="EP" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFileNoLines">
</BoolProperty>
<BoolProperty Name="PreprocessKeepComments" DisplayName="Keep Comments" Description="(overrides C/C++ property) Suppresses comment strip from source code; requires that one of the 'Preprocessing' options be set. (/C)" Category="MocCpp" Switch="C" F1Keyword="VC.Project.VCCLCompilerTool.KeepComments">
</BoolProperty>
<StringProperty Name="QtCppHeader_Code_Generation" Category="MocCpp" ReadOnly="true" DisplayName="########## Code Generation ##############################" />
<BoolProperty ReverseSwitch="GF-" Name="StringPooling" DisplayName="Enable String Pooling" Description="(overrides C/C++ property) Enables the compiler to create a single read-only copy of identical strings in the program image and in memory during execution, resulting in smaller programs, an optimization called string pooling. /O1, /O2, and /ZI automatically set /GF option. " Category="MocCpp" Switch="GF" F1Keyword="VC.Project.VCCLCompilerTool.StringPooling">
</BoolProperty>
<BoolProperty ReverseSwitch="Gm-" Name="MinimalRebuild" DisplayName="Enable Minimal Rebuild" Description="(overrides C/C++ property) Enables minimal rebuild, which determines whether C++ source files that include changed C++ class definitions (stored in header (.h) files) need to be recompiled." Category="MocCpp" Switch="Gm" F1Keyword="VC.Project.VCCLCompilerTool.MinimalRebuild">
</BoolProperty>
<EnumProperty Name="ExceptionHandling" DisplayName="Enable C++ Exceptions" Description="(overrides C/C++ property) Specifies the model of exception handling to be used by the compiler." Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.ExceptionHandling">
<EnumValue Name="Async" Switch="EHa" DisplayName="Yes with SEH Exceptions" Description="The exception-handling model that catches asynchronous (structured) and synchronous (C++) exceptions. (/EHa)">
</EnumValue>
<EnumValue Name="Sync" Switch="EHsc" DisplayName="Yes" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions never throw a C++ exception. (/EHsc)">
</EnumValue>
<EnumValue Name="SyncCThrow" Switch="EHs" DisplayName="Yes with Extern C functions" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions do throw an exception. (/EHs)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No" Description="No exception handling.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SmallerTypeCheck" DisplayName="Smaller Type Check" Description="(overrides C/C++ property) Enable checking for conversion to smaller types, incompatible with any optimization type other than debug. (/RTCc)" Category="MocCpp" Switch="RTCc" F1Keyword="VC.Project.VCCLCompilerTool.SmallerTypeCheck">
</BoolProperty>
<EnumProperty Name="BasicRuntimeChecks" DisplayName="Basic Runtime Checks" Description="(overrides C/C++ property) Perform basic runtime error checks, incompatible with any optimization type other than debug. (/RTCs, /RTCu, /RTC1)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.BasicRuntimeChecks">
<EnumValue Name="StackFrameRuntimeCheck" Switch="RTCs" DisplayName="Stack Frames" Description="Enables stack frame run-time error checking.">
</EnumValue>
<EnumValue Name="UninitializedLocalUsageCheck" Switch="RTCu" DisplayName="Uninitialized variables" Description="Reports when a variable is used without having been initialized.">
</EnumValue>
<EnumValue Name="EnableFastChecks" Switch="RTC1" DisplayName="Both (/RTC1, equiv. to /RTCsu)" Description="Equivalent of /RTCsu.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default runtime checks.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="RuntimeLibrary" DisplayName="Runtime Library" Description="(overrides C/C++ property) Specify runtime library for linking. (/MT, /MTd, /MD, /MDd)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeLibrary">
<EnumValue Name="MultiThreaded" Switch="MT" DisplayName="Multi-threaded" Description="Causes your application to use the multithread, static version of the run-time library.">
</EnumValue>
<EnumValue Name="MultiThreadedDebug" Switch="MTd" DisplayName="Multi-threaded Debug" Description="Defines _DEBUG and _MT. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols.">
</EnumValue>
<EnumValue Name="MultiThreadedDLL" Switch="MD" DisplayName="Multi-threaded DLL" Description="Causes your application to use the multithread- and DLL-specific version of the run-time library. Defines _MT and _DLL and causes the compiler to place the library name MSVCRT.lib into the .obj file.">
</EnumValue>
<EnumValue Name="MultiThreadedDebugDLL" Switch="MDd" DisplayName="Multi-threaded Debug DLL" Description="Defines _DEBUG, _MT, and _DLL and causes your application to use the debug multithread- and DLL-specific version of the run-time library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="StructMemberAlignment" DisplayName="Struct Member Alignment" Description="(overrides C/C++ property) Specifies 1, 2, 4, or 8-byte boundaries for struct member alignment. (/Zp[num])" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.StructMemberAlignment">
<EnumValue Name="1Byte" Switch="Zp1" DisplayName="1 Byte" Description="Packs structures on 1-byte boundaries. Same as /Zp.">
</EnumValue>
<EnumValue Name="2Bytes" Switch="Zp2" DisplayName="2 Bytes" Description="Packs structures on 2-byte boundaries.">
</EnumValue>
<EnumValue Name="4Bytes" Switch="Zp4" DisplayName="4 Byte" Description="Packs structures on 4-byte boundaries.">
</EnumValue>
<EnumValue Name="8Bytes" Switch="Zp8" DisplayName="8 Bytes" Description="Packs structures on 8-byte boundaries (default).">
</EnumValue>
<EnumValue Name="16Bytes" Switch="Zp16" DisplayName="16 Bytes" Description="Packs structures on 16-byte boundaries.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default alignment settings.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="BufferSecurityCheck" DisplayName="Security Check" Description="(overrides C/C++ property) The Security Check helps detect stack-buffer over-runs, a common attempted attack upon a program's security. . (/GS-, /GS)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.BufferSecurityCheck">
<EnumValue Name="false" Switch="GS-" DisplayName="Disable Security Check" Description="Disable Security Check. (/GS-)">
</EnumValue>
<EnumValue Name="true" Switch="GS" DisplayName="Enable Security Check" Description="Enable Security Check. (/GS)">
</EnumValue>
</EnumProperty>
<EnumProperty Name="ControlFlowGuard" DisplayName="Control Flow Guard" Description="(overrides C/C++ property) Guard security check helps detect attempts to dispatch to illegal block of code. (/guard:cf)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.ControlFlowGuard">
<EnumValue Name="Guard" Switch="guard:cf" DisplayName="Yes" Description="Enable Security Check with Guard (/guard:cf)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Gy-" Name="FunctionLevelLinking" DisplayName="Enable Function-Level Linking" Description="(overrides C/C++ property) Allows the compiler to package individual functions in the form of packaged functions (COMDATs). Required for edit and continue to work. (/Gy)" Category="MocCpp" Switch="Gy" F1Keyword="VC.Project.VCCLCompilerTool.EnableFunctionLevelLinking">
</BoolProperty>
<BoolProperty ReverseSwitch="Qpar-" Name="EnableParallelCodeGeneration" DisplayName="Enable Parallel Code Generation" Description="(overrides C/C++ property) Allows the compiler to generate parallel code for loops identified using #pragma loop(hint_parallel[(n)]) when optimization is enabled." Category="MocCpp" Switch="Qpar" F1Keyword="VC.Project.VCCLCompilerTool.EnableParallelCodeGeneration">
</BoolProperty>
<EnumProperty Name="EnableEnhancedInstructionSet" DisplayName="Enable Enhanced Instruction Set" Description="(overrides C/C++ property) Enable use of instructions found on processors that support enhanced instruction sets, e.g., the SSE, SSE2, AVX, AVX2 and AVX-512 enhancements to IA-32; AVX, AVX2 and AVX-512 to x64. Currently /arch:SSE and /arch:SSE2 are only available when building for the x86 architecture. If no option is specified, the compiler will use instructions found on processors that support SSE2. Use of enhanced instructions can be disabled with /arch:IA32. (/arch:SSE, /arch:SSE2, /arch:AVX, /arch:AVX2, /arch:AVX512, /arch:IA32)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.EnableEnhancedInstructionSet">
<EnumValue Name="StreamingSIMDExtensions" Switch="arch:SSE" DisplayName="Streaming SIMD Extensions" Description="Streaming SIMD Extensions. (/arch:SSE)">
</EnumValue>
<EnumValue Name="StreamingSIMDExtensions2" Switch="arch:SSE2" DisplayName="Streaming SIMD Extensions 2" Description="Streaming SIMD Extensions 2. (/arch:SSE2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions" Switch="arch:AVX" DisplayName="Advanced Vector Extensions" Description="Advanced Vector Extensions. (/arch:AVX)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions2" Switch="arch:AVX2" DisplayName="Advanced Vector Extensions 2" Description="Advanced Vector Extensions 2. (/arch:AVX2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions512" Switch="arch:AVX512" DisplayName="Advanced Vector Extensions 512" Description="Advanced Vector Extensions 512. (/arch:AVX512)">
</EnumValue>
<EnumValue Name="NoExtensions" Switch="arch:IA32" DisplayName="No Enhanced Instructions" Description="No Enhanced Instructions. (/arch:IA32)">
</EnumValue>
<EnumValue Name="NotSet" Switch="" DisplayName="Not Set" Description="Not Set.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="FloatingPointModel" DisplayName="Floating Point Model" Description="(overrides C/C++ property) Sets the floating point model. (/fp:precise, /fp:strict, /fp:fast)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.floatingPointModel">
<EnumValue Name="Precise" Switch="fp:precise" DisplayName="Precise" Description="Default. Improves the consistency of floating-point tests for equality and inequality.">
</EnumValue>
<EnumValue Name="Strict" Switch="fp:strict" DisplayName="Strict" Description="The strictest floating-point model. /fp:strict causes fp_contract to be OFF and fenv_access to be ON. /fp:except is implied and can be disabled by explicitly specifying /fp:except-. When used with /fp:except-, /fp:strict enforces strict floating-point semantics but without respect for exceptional events.">
</EnumValue>
<EnumValue Name="Fast" Switch="fp:fast" DisplayName="Fast" Description="Creates the fastest code in the majority of cases. ">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="fp:except-" Name="FloatingPointExceptions" DisplayName="Enable Floating Point Exceptions" Description="(overrides C/C++ property) Reliable floating-point exception model. Exceptions will be raised immediately after they are triggered. (/fp:except)" Category="MocCpp" Switch="fp:except" F1Keyword="VC.Project.VCCLCompilerTool.FloatingPointExceptions">
</BoolProperty>
<BoolProperty Name="CreateHotpatchableImage" DisplayName="Create Hotpatchable Image" Description="(overrides C/C++ property) When hotpatching is on, the compiler ensures that first instruction of each function is two bytes, which is required for hot patching. (/hotpatch)" Category="MocCpp" Switch="hotpatch" F1Keyword="VC.Project.VCCLCompilerTool.CreateHotpatchableImage">
</BoolProperty>
<StringProperty Name="QtCppHeader_Language" Category="MocCpp" ReadOnly="true" DisplayName="########## Language ##############################" />
<BoolProperty Name="DisableLanguageExtensions" DisplayName="Disable Language Extensions" Description="(overrides C/C++ property) Suppresses or enables language extensions. (/Za)" Category="MocCpp" Switch="Za" F1Keyword="VC.Project.VCCLCompilerTool.DisableLanguageExtensions">
</BoolProperty>
<BoolProperty Name="ConformanceMode" DisplayName="Conformance mode" Description="(overrides C/C++ property) Enables or suppresses conformance mode. (/permissive-)" Category="MocCpp" Switch="permissive-" F1Keyword="VC.Project.VCCLCompilerTool.ConformanceMode">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:wchar_t-" Name="TreatWChar_tAsBuiltInType" DisplayName="Treat WChar_t As Built in Type" Description="(overrides C/C++ property) When specified, the type wchar_t becomes a native type that maps to __wchar_t in the same way that short maps to __int16. /Zc:wchar_t is on by default." Category="MocCpp" Switch="Zc:wchar_t" F1Keyword="VC.Project.VCCLCompilerTool.TreatWChar_tAsBuiltInType">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:forScope-" Name="ForceConformanceInForLoopScope" DisplayName="Force Conformance in For Loop Scope" Description="(overrides C/C++ property) Used to implement standard C++ behavior for the for statement loops with Microsoft extensions (/Za, /Ze (Disable Language Extensions)). /Zc:forScope is on by default." Category="MocCpp" Switch="Zc:forScope" F1Keyword="VC.Project.VCCLCompilerTool.ForceConformanceInForLoopScope">
</BoolProperty>
<BoolProperty Name="RemoveUnreferencedCodeData" DisplayName="Remove unreferenced code and data" Description="(overrides C/C++ property) When specified, compiler no longer generates symbol information for unreferenced code and data." Category="MocCpp" Switch="Zc:inline" F1Keyword="VC.Project.VCCLCompilerTool.RemoveUnreferencedCodeData">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:rvalueCast-" Name="EnforceTypeConversionRules" DisplayName="Enforce type conversion rules" Description="(overrides C/C++ property) Used to identify an rvalue reference type as the result of a cast operation in accordance with the C++11 standard." Category="MocCpp" Switch="Zc:rvalueCast" F1Keyword="VC.Project.VCCLCompilerTool.EnforceTypeConversionRules">
</BoolProperty>
<BoolProperty ReverseSwitch="GR-" Name="RuntimeTypeInfo" DisplayName="Enable Run-Time Type Information" Description="(overrides C/C++ property) Adds code for checking C++ object types at run time (runtime type information). (/GR, /GR-)" Category="MocCpp" Switch="GR" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeTypeInfo">
</BoolProperty>
<BoolProperty ReverseSwitch="openmp-" Name="OpenMPSupport" DisplayName="Open MP Support" Description="(overrides C/C++ property) Enable OpenMP 2.0 language extensions. (/openmp)" Category="MocCpp" Switch="openmp" F1Keyword="VC.Project.VCCLCompilerTool.OpenMP">
</BoolProperty>
<EnumProperty Name="LanguageStandard" DisplayName="C++ Language Standard" Description="(overrides C/C++ property) Determines the C++ language standard the compiler will enforce. It is recommended to use the latest version when possible. (/std:c++14, /std:c++17, /std:c++latest)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.CppLanguageStandard">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="stdcpp14" Switch="std:c++14" DisplayName="ISO C++14 Standard">
</EnumValue>
<EnumValue Name="stdcpp17" Switch="std:c++17" DisplayName="ISO C++17 Standard">
</EnumValue>
<EnumValue Name="stdcpplatest" Switch="std:c++latest" DisplayName="Preview - Features from the Latest C++ Working Draft">
</EnumValue>
</EnumProperty>
<BoolProperty Name="EnableModules" DisplayName="Enable C++ Modules (experimental)" Description="(overrides C/C++ property) Experimental support for the C++ Modules TS and Standard Library modules." Category="MocCpp" Switch="experimental:module" F1Keyword="VC.Project.VCCLCompilerTool.ModulesSupport">
</BoolProperty>
<StringProperty Name="QtCppHeader_Precompiled_Headers" Category="MocCpp" ReadOnly="true" DisplayName="########## Precompiled Headers ##############################" />
<EnumProperty Name="PrecompiledHeader" DisplayName="Precompiled Header" Description="(overrides C/C++ property) Create/Use Precompiled Header : Enables creation or use of a precompiled header during the build. (/Yc, /Yu)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.UsePrecompiledHeader">
<EnumValue Name="Create" Switch="Yc" DisplayName="Create" Description="Instructs the compiler to create a precompiled header (.pch) file that represents the state of compilation at a certain point.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="Use" Switch="Yu" DisplayName="Use" Description="Instructs the compiler to use an existing precompiled header (.pch) file in the current compilation.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="NotUsing" Switch="" DisplayName="Not Using Precompiled Headers" Description="Not using precompiled headers. ">
</EnumValue>
</EnumProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderFile" DisplayName="Precompiled Header File" Description="(overrides C/C++ property) Specifies header file name to use when creating or using a precompiled header file. (/Yc[name], /Yu[name])" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderThrough">
</StringProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderOutputFile" DisplayName="Precompiled Header Output File" Description="(overrides C/C++ property) Specifies the path and/or name of the generated precompiled header file. (/Fp[name])" Category="MocCpp" Switch="Fp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Output_Files" Category="MocCpp" ReadOnly="true" DisplayName="########## Output Files ##############################" />
<BoolProperty Name="ExpandAttributedSource" DisplayName="Expand Attributed Source" Description="(overrides C/C++ property) Create listing file with expanded attributes injected into source file. (/Fx)" Category="MocCpp" Switch="Fx" F1Keyword="VC.Project.VCCLCompilerTool.ExpandAttributedSource">
</BoolProperty>
<EnumProperty Name="AssemblerOutput" DisplayName="Assembler Output" Description="(overrides C/C++ property) Specifies the contents of assembly language output file. (/FA, /FAc, /FAs, /FAcs)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerOutput">
<EnumValue Name="NoListing" Switch="" DisplayName="No Listing" Description="No listing. ">
</EnumValue>
<EnumValue Name="AssemblyCode" Switch="FA" DisplayName="Assembly-Only Listing" Description="Assembly code; .asm">
</EnumValue>
<EnumValue Name="AssemblyAndMachineCode" Switch="FAc" DisplayName="Assembly With Machine Code" Description="Machine and assembly code; .cod">
</EnumValue>
<EnumValue Name="AssemblyAndSourceCode" Switch="FAs" DisplayName="Assembly With Source Code" Description="Source and assembly code; .asm">
</EnumValue>
<EnumValue Name="All" Switch="FAcs" DisplayName="Assembly, Machine Code and Source" Description="Assembly, machine code and source code; .cod">
</EnumValue>
</EnumProperty>
<BoolProperty Name="UseUnicodeForAssemblerListing" DisplayName="Use Unicode For Assembler Listing" Description="(overrides C/C++ property) Causes the output file to be created in UTF-8 format. " Category="MocCpp" Switch="FAu" F1Keyword="VC.Project.VCCLCompilerTool.UseUnicodeForAssemblerListing">
</BoolProperty>
<StringProperty Subtype="file" Name="AssemblerListingLocation" DisplayName="ASM List Location" Description="(overrides C/C++ property) Specifies relative path and/or name for ASM listing file; can be file or directory name. (/Fa[name])" Category="MocCpp" Switch="Fa" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerListingLocation">
</StringProperty>
<StringProperty Subtype="file" Name="ObjectFileName" DisplayName="Object File Name" Description="(overrides C/C++ property) Specifies a name to override the default object file name; can be file or directory name. (/Fo[name])" Category="MocCpp" Switch="Fo" F1Keyword="VC.Project.VCCLCompilerTool.ObjectFile">
</StringProperty>
<StringProperty Subtype="file" Name="ProgramDataBaseFileName" DisplayName="Program Database File Name" Description="(overrides C/C++ property) Specifies a name for a compiler-generated PDB file; also specifies base name for the required compiler-generated IDB file; can be file or directory name. (/Fd[name])" Category="MocCpp" Switch="Fd" F1Keyword="VC.Project.VCCLCompilerTool.ProgramDataBaseFileName">
</StringProperty>
<BoolProperty Name="GenerateXMLDocumentationFiles" DisplayName="Generate XML Documentation Files" Description="(overrides C/C++ property) Specifies that the compiler should generate XML documentation comment files (.XDC). (/doc)" Category="MocCpp" Switch="doc" F1Keyword="VC.Project.VCCLCompilerTool.GenerateXMLDocumentationFiles">
<Argument Property="XMLDocumentationFileName" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="XMLDocumentationFileName" DisplayName="XML Documentation File Name" Description="(overrides C/C++ property) Specifies the name of the generated XML documentation files; can be file or directory name. (/doc[name])" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.XMLDocumentationFileName">
</StringProperty>
<StringProperty Name="QtCppHeader_Browse_Information" Category="MocCpp" ReadOnly="true" DisplayName="########## Browse Information ##############################" />
<BoolProperty Name="BrowseInformation" DisplayName="Enable Browse Information" Description="(overrides C/C++ property) Enable Browse Information : Specifies level of browse information in .bsc file. (/FR)" Category="MocCpp" Switch="FR" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformation">
<Argument Property="BrowseInformationFile" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="BrowseInformationFile" DisplayName="Browse Information File" Description="(overrides C/C++ property) Browse File : Specifies optional name for browser information file. (/FR[name])" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformationFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Advanced" Category="MocCpp" ReadOnly="true" DisplayName="########## Advanced ##############################" />
<EnumProperty Name="CallingConvention" DisplayName="Calling Convention" Description="(overrides C/C++ property) Select the default calling convention for your application (can be overridden by function). (/Gd, /Gr, /Gz, /Gv)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.CallingConvention">
<EnumValue Name="Cdecl" Switch="Gd" DisplayName="__cdecl" Description="Specifies the __cdecl calling convention for all functions except C++ member functions and functions marked __stdcall or __fastcall.">
</EnumValue>
<EnumValue Name="FastCall" Switch="Gr" DisplayName="__fastcall" Description="Specifies the __fastcall calling convention for all functions except C++ member sfunctions and functions marked __cdecl or __stdcall. All __fastcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="StdCall" Switch="Gz" DisplayName="__stdcall" Description="Specifies the __stdcall calling convention for all functions except C++ member functions and functions marked __cdecl or __fastcall. All __stdcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="VectorCall" Switch="Gv" DisplayName="__vectorcall" Description="Specifies the __vectorcall calling convention for all functions except C++ member functions and functions marked __cdecl, __fastcall, or __stdcall. All __vectorcall functions must have prototypes.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="CompileAs" DisplayName="Compile As" Description="(overrides C/C++ property) Select compile language option for .c and .cpp files. (/TC, /TP)" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAs">
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default.">
</EnumValue>
<EnumValue Name="CompileAsC" Switch="TC" DisplayName="Compile as C Code" Description="Compile as C Code.">
</EnumValue>
<EnumValue Name="CompileAsCpp" Switch="TP" DisplayName="Compile as C++ Code" Description="Compile as C++ Code.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="DisableSpecificWarnings" DisplayName="Disable Specific Warnings" Description="(overrides C/C++ property) Disable the desired warning numbers; put numbers in a semi-colon delimited list. (/wd[num])" Category="MocCpp" Switch="wd" F1Keyword="VC.Project.VCCLCompilerTool.DisableSpecificWarnings">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedIncludeFiles" DisplayName="Forced Include File" Description="(overrides C/C++ property) one or more forced include files. (/FI[name])" Category="MocCpp" Switch="FI" F1Keyword="VC.Project.VCCLCompilerTool.ForcedIncludeFiles">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedUsingFiles" DisplayName="Forced #using File" Description="(overrides C/C++ property) Specifies one or more forced #using files. (/FU[name])" Category="MocCpp" Switch="FU" F1Keyword="VC.Project.VCCLCompilerTool.ForcedUsingFiles">
</StringListProperty>
<BoolProperty Name="ShowIncludes" DisplayName="Show Includes" Description="(overrides C/C++ property) Generates a list of include files with compiler output. (/showIncludes)" Category="MocCpp" Switch="showIncludes" F1Keyword="VC.Project.VCCLCompilerTool.ShowIncludes">
</BoolProperty>
<BoolProperty Name="UseFullPaths" DisplayName="Use Full Paths" Description="(overrides C/C++ property) Use full paths in diagnostic messages. (/FC)" Category="MocCpp" Switch="FC" F1Keyword="VC.Project.VCCLCompilerTool.UseFullPaths">
</BoolProperty>
<BoolProperty Name="OmitDefaultLibName" DisplayName="Omit Default Library Name" Description="(overrides C/C++ property) Do not include default library names in .obj files. (/Zl)" Category="MocCpp" Switch="Zl" F1Keyword="VC.Project.VCCLCompilerTool.OmitDefaultLibName">
</BoolProperty>
<EnumProperty Name="ErrorReporting" DisplayName="Internal Compiler Error Reporting" Description="(overrides C/C++ property) Specifies how internal tool errors should be reported back to Microsoft. The default in the IDE is prompt. The default from command line builds is queue. (/errorReport:[method])" Category="MocCpp" F1Keyword="VC.Project.VCCLCompilerTool.ErrorReporting">
<EnumValue Name="None" Switch="errorReport:none" DisplayName="Do Not Send Report" Description="Reports about internal compiler errors will not be collected or sent to Microsoft.">
</EnumValue>
<EnumValue Name="Prompt" Switch="errorReport:prompt" DisplayName="Prompt Immediately" Description="Prompts you to send a report when you receive an internal compiler error.">
</EnumValue>
<EnumValue Name="Queue" Switch="errorReport:queue" DisplayName="Queue For Next Login" Description="Queues the error report. When you log in with administrator privileges, a pop-up window is displayed and allows you to report any failures since the last time you were logged in (you will not be prompted to send reports for failures more than once every three days). queue is the default when compiling an application at the command line.">
</EnumValue>
<EnumValue Name="Send" Switch="errorReport:send" DisplayName="Send Automatically" Description="Automatically sends reports of internal compiler errors to Microsoft. To enable this option, you must first agree to Microsoft%27s data collection policy. The first time you specify /errorReport:send on a computer, a compiler message will refer you to a website that contains Microsoft%27s data collection policy.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="TreatSpecificWarningsAsErrors" DisplayName="Treat Specific Warnings As Errors" Description="(overrides C/C++ property) Treats the specific compiler warning as an error where n is a compiler warning." Category="MocCpp" Switch="we" F1Keyword="VC.Project.VCCLCompilerTool.TreatSpecificWarningsAsErrors">
</StringListProperty>
<!-- END Generated Text -->
<StringProperty
Name="AdditionalCppOptions"
DisplayName="Additional Options"
Description="Additional Options."
Category="MocCpp"/>
</Rule>
<ItemType
Name="QtMoc"
DisplayName="Qt Meta-Object Compiler (moc)" />
<ContentType
Name="QtMoc"
DisplayName="Qt Meta-Object Compiler (moc)"
ItemType="QtMoc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,46 @@
<?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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps_AfterRcc>
$(QtMsBuildProps_AfterRcc);
$(MSBuildThisFileDirectory)qtqml.props
</QtMsBuildProps_AfterRcc>
<QtMsBuildTargets_AfterRcc>
$(QtMsBuildTargets_AfterRcc);
$(MSBuildThisFileDirectory)qtqml.targets
</QtMsBuildTargets_AfterRcc>
</PropertyGroup>
</Project>

@ -0,0 +1,84 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild QML property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeQml)' != ''"
Project="$(QtMsBuildProps_BeforeQml)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtRcc item template, QML cache generation properties
// -->
<ItemDefinitionGroup>
<QtRcc>
<QmlCacheGenerate>false</QmlCacheGenerate>
<!--
// QML cache generation -->
<QmlCacheGenMessage
><![CDATA[Qt Quick Compiler: compiling %<Identity> ahead of time]]></QmlCacheGenMessage>
<QmlCacheOutputFile
><![CDATA[$(ProjectDir)GeneratedFiles\%<Filename>_%<Suffix>.cpp]]></QmlCacheOutputFile>
<!--
// QRC filtering -->
<QmlCacheFilterMessage
>Qt Quick Compiler: filtering %(Identity)</QmlCacheFilterMessage>
<QmlCacheFilteredFile
>$(ProjectDir)GeneratedFiles\%(Filename)_qmlcache.qrc</QmlCacheFilteredFile>
<QmlCacheFilteredOutputFile
>$(ProjectDir)GeneratedFiles\qrc_%(Filename)_qmlcache.cpp</QmlCacheFilteredOutputFile>
<QmlCacheFilteredInitFuncName
>%(Filename)_qmlcache</QmlCacheFilteredInitFuncName>
<!--
// QML cache loader generation -->
<QmlCacheLoaderMessage
>Qt Quick Compiler: generating cache loader</QmlCacheLoaderMessage>
<QmlCacheLoaderFile
>$(ProjectDir)GeneratedFiles\qmlcache_loader.cpp</QmlCacheLoaderFile>
</QtRcc>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterQml)' != ''"
Project="$(QtMsBuildProps_AfterQml)"/>
</Project>

@ -0,0 +1,624 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Targets required to build the QML cache (aka. qtquickcompiler)
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeQml)' != ''"
Project="$(QtMsBuildTargets_BeforeQml)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtBuildTargets>$(QtBuildTargets);QtQmlCache</QtBuildTargets>
<QtRccDependsOn>$(QtRccDependsOn);QtQmlCache</QtRccDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtQmlCachePrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Pre-process rcc source files marked for QML cache generation
// -->
<Target Name="QtQmlCachePrepare"
DependsOnTargets="QtRccSetDependencies"
BeforeTargets="QtRccPrepare" Condition="'@(QtRcc)' != ''"
Inputs="%(QtRcc.Identity)" Outputs="@(QtRcc->'####### Don't skip this target #######')">
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtQmlCachePrepare %(QtRcc.Identity)" />
<!--// Remove sources excluded from build -->
<ItemGroup>
<QtRcc Remove="@(QtRcc)"
Condition="'$(SelectedFiles)' == '' AND '%(QtRcc.ExcludedFromBuild)' == 'true'"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// $(is_selected) ::= file is selected to build
// -->
<PropertyGroup>
<selected_files>[@(selected_files->'%(Identity)','][')]</selected_files>
<file>[@(QtRcc->'%(Identity)')]</file>
<output_file>@(QtRcc->'%(OutputFile)')</output_file>
<is_selected
Condition="'@(selected_files)' == '' OR $(selected_files.Contains('$(file)'))"
>true</is_selected>
<is_selected
Condition="'@(selected_files)' != '' AND !$(selected_files.Contains('$(file)'))"
>false</is_selected>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Parse QRC file
// @(res_file) ::= names of resource files
// @(res_qml_js) ::= names of QML and JS resource files
// @(res_other) ::= names of other resource files
// -->
<ItemGroup>
<res_file
Condition="'@(QtRcc)' != '' AND '%(QtRcc.QmlCacheGenerate)' == 'true'"
Include="%(QtRcc.ResourceFiles)"/>
</ItemGroup>
<ItemGroup Condition="'@(res_file)' != ''">
<res_qml_js Include="%(res_file.Identity)"
Condition="'%(res_file.Extension)' == '.qml' OR '%(res_file.Extension)' == '.js'"/>
<res_other Include="%(res_file.Identity)"
Condition="'%(res_file.Extension)' != '.qml' AND '%(res_file.Extension)' != '.js'"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Expand QML and JS build items
// -->
<ItemGroup Condition="'@(res_qml_js)' != ''">
<template Include="template">
<InputFile><![CDATA[%<FullPath>]]></InputFile>
<OutputFile>@(QtRcc->'%(QmlCacheOutputFile)')</OutputFile>
<Message>@(QtRcc->'%(QmlCacheGenMessage)')</Message>
<Outputs>%(OutputFile)</Outputs>
<ResourceFile>@(QtRcc->'%(FullPath)')</ResourceFile>
<IsSelected>$(is_selected)</IsSelected>
<AdditionalDependencies>@(QtRcc)</AdditionalDependencies>
</template>
</ItemGroup>
<!--
// @(QtQml) ::= QML and JS resource files to be cached -->
<Expand Condition="'@(res_qml_js)' != ''"
Items="@(res_qml_js)" BaseItem="@(QtRcc)" Template="@(template)">
<Output TaskParameter="Result" ItemName="QtQml"/>
</Expand>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert rcc sources to QML cache generation filter sources
// -->
<ItemGroup Condition="'@(QtQml)' != ''">
<!--
// @(QtRccFilter) ::= QRC files to be filtered -->
<QtRccFilter Include="@(QtRcc)">
<QtQml>@(QtQml)</QtQml>
<OtherResources>@(res_other->'%(Identity)')</OtherResources>
<InputChanged>false</InputChanged>
<OutputFile>%(QtRcc.QmlCacheFilteredFile)</OutputFile>
<Outputs>%(QtRcc.QmlCacheFilteredFile)</Outputs>
<IsSelected>$(is_selected)</IsSelected>
</QtRccFilter>
<QtRcc Remove="@(QtRcc)"/>
</ItemGroup>
<!--
// Delete output file to force build of source if it was manually selected to build
// (e.g. by the 'Compile' option in the context menu for the file) -->
<Delete
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'"
Files="%(QtRccFilter.OutputFile)"/>
<Delete
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'"
Files="%(QtQml.OutputFile)"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<selected_files/>
<file/>
<output_file/>
<is_selected/>
</PropertyGroup>
<ItemGroup>
<res_file Remove="@(res_file)"/>
<res_qml_js Remove="@(res_qml_js)"/>
<res_other Remove="@(res_other)"/>
<template Remove="@(res_other)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtRccFilterSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputModified flag for modified files (i.e. Inputs newer than Outputs)
// -->
<Target Name="QtRccFilterSetModified" DependsOnTargets="QtQmlCachePrepare"
Inputs="%(QtRccFilter.FullPath);%(QtRccFilter.AdditionalDependencies)"
Outputs="@(QtRccFilter->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true' AND '@(QtRccFilter)' != ''"
Text="## QtRccFilterSetModified %(QtRccFilter.Identity) => %(QtRccFilter.OutputFile)"/>
<PropertyGroup>
<input_changed/>
</PropertyGroup>
<CreateProperty Condition="'@(QtRccFilter)' != ''" Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtRccFilter>
<InputChanged>$(input_changed)</InputChanged>
<IsSelected Condition="'$(input_changed)' == 'true'">true</IsSelected>
</QtRccFilter>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<input_changed/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtRccFilter
/////////////////////////////////////////////////////////////////////////////////////////////////
// Filter QRC file:
// - Filter QML and JS resources from QRC
// - If other resources are present, generate new QRC with filtered contents
// - Collect data to use in cache loader generation
// -->
<Target Name="QtRccFilter" DependsOnTargets="QtRccFilterSetModified"
Inputs="%(QtRccFilter.FullPath);%(QtRccFilter.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtRccFilter->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRccFilter %(QtRccFilter.Identity) => @(QtRccFilter->'%(OutputFile)')" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Set DependenciesChanged flag for modified files or dependencies
// -->
<PropertyGroup>
<dependencies_changed/>
</PropertyGroup>
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<ItemGroup>
<QtRccFilter>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
</QtRccFilter>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// @(input_file) ::= QRC file to filter
// @(filtered_file) ::= filtered QRC file
// -->
<ItemGroup>
<input_file Include="%(QtRccFilter.InputFile)"
Condition="'%(QtRccFilter.QtQml)' != '' AND '%(QtRccFilter.InputFile)' != ''"/>
<filtered_file Include="%(QtRccFilter.QmlCacheFilteredFile)"
Condition="'%(QtRccFilter.QmlCacheFilteredFile)' != ''"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Prepare qmlcachegen command for QRC filtering
// -->
<PropertyGroup>
<!--
// $(options) ::= qmlcachegen command line options -->
<options Condition="'%(QtRccFilter.QtQml)' != '' AND '@(input_file)' != ''"
>$(options) @(input_file->'--filter-resource-file &quot;%(Identity)&quot;')</options>
<options Condition="'%(QtRccFilter.QtQml)' != '' AND '@(filtered_file)' != ''"
>$(options) @(filtered_file->'-o &quot;%(Identity)&quot;')</options>
<!--
// $(full_path) ::= full path of filtered file -->
<full_path Condition="'%(QtRccFilter.QtQml)' != ''"
>$([System.IO.Path]::Combine($(MSBuildProjectDirectory),%(QmlCacheFilteredFile)))</full_path>
<!--
// $(relative_path) ::= path of filtered file, relative to project directory -->
<relative_path Condition="'%(QtRccFilter.QtQml)' != ''"
>$([MSBuild]::MakeRelative($(MSBuildProjectDirectory),$(full_path)).TrimStart('\'))</relative_path>
<!--
// $(run_parallel) ::= run qmlcachegen in a parallel process
// $(run_single) ::= run qmlcachegen in single process mode -->
<run_parallel Condition="'@(QtRccFilter)' != ''
AND '%(QtRccFilter.ParallelProcess)' == 'true' AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<run_single Condition="'@(QtRccFilter)' != ''
AND ('%(QtRccFilter.ParallelProcess)' != 'true' OR '$(SelectedFiles)' != '')"
>true</run_single>
</PropertyGroup>
<ItemGroup Condition="'@(QtRccFilter)' != ''">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Create work item for QRC filtering
// -->
<QtWork
Include="@(QtRccFilter)"
Condition="'%(QtRccFilter.QtQml)' != ''
AND '%(QtRccFilter.OtherResources)' != ''
AND '%(QtRccFilter.IsSelected)' == 'true'">
<WorkType>qmlcachegen_filter</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtToolsPath)\qmlcachegen.exe</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
>%(QtRccFilter.QTDIR)\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<OutputFile>$(full_path)</OutputFile>
<Message>%(QtRccFilter.QmlCacheFilterMessage)</Message>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
</QtWork>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Create build item for generated QRC file
// -->
<QtRcc Condition="'%(QtRccFilter.QtQml)' != ''
AND '%(QtRccFilter.OtherResources)' != ''"
Include="@(QtRccFilter->'$(relative_path)')">
<InputFile>@(QtRccFilter->'%(QmlCacheFilteredFile)')</InputFile>
<OutputFile>@(QtRccFilter->'%(QmlCacheFilteredOutputFile)')</OutputFile>
<InitFuncName>@(QtRccFilter->'%(QmlCacheFilteredInitFuncName)')</InitFuncName>
<DependsOn>@(QtRccFilter)</DependsOn>
</QtRcc>
</ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// If sources were manually selected (e.g. by the 'Compile' option in the context menu for
// project items), add generated QRC to the list of selected files
// -->
<PropertyGroup>
<selected_rcc
Condition="'$(SelectedFiles)' != ''
AND '%(QtRccFilter.IsSelected)' == 'true'
AND '%(QtRccFilter.QtQml)' != ''
AND '%(QtRccFilter.OtherResources)' != ''"
>$(relative_path)</selected_rcc>
</PropertyGroup>
<PropertyGroup Condition="'$(selected_rcc)' != ''">
<SelectedFiles>$(SelectedFiles);$(selected_rcc)</SelectedFiles>
</PropertyGroup>
<ItemGroup Condition="'$(selected_rcc)' != ''">
<selected_files Include="$(selected_rcc)"/>
<SelectedFiles Include="$(selected_rcc)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Update timestamp of generated QRC file to force rcc target to run
// -->
<MakeDir Directories="$([System.IO.Path]::GetDirectoryName(%(QtRccFilter.OutputFile)))"/>
<Touch Condition="'%(QtRccFilter.InputChanged)' == 'true'"
AlwaysCreate="true" Files="%(QtRccFilter.OutputFile)"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Create loader input item, used in cache loader generation
// -->
<ItemGroup Condition="'@(QtRccFilter)' != ''">
<loader_input Include="@(QtRccFilter->'QtQmlCacheLoader')">
<Inputs>%(QtRccFilter.Identity)</Inputs>
<InputFile>%(QtRccFilter.InputFile)</InputFile>
<Mapping Condition="'%(QtRccFilter.QtQml)' != '' AND '%(QtRccFilter.OtherResources)' != ''"
>%(QtRccFilter.InputFile)=$(full_path)</Mapping>
</loader_input>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<ItemGroup>
<input_file Remove="@(input_file)"/>
<filtered_file Remove="@(filtered_file)"/>
</ItemGroup>
<PropertyGroup>
<dependencies_changed/>
<options/>
<full_path/>
<relative_path/>
<run_parallel/>
<run_single/>
<selected_rcc/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtQmlCacheLoader
/////////////////////////////////////////////////////////////////////////////////////////////////
// Generate QML cache loader
// -->
<Target Name="QtQmlCacheLoader" DependsOnTargets="QtRccFilter">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtQmlCacheLoader @(QtQmlCacheLoader->'%(Inputs)')" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Get QML cache loader properties from project rcc property page
// -->
<ItemGroup>
<QtRcc Include="qmlcachengen_loader"/>
<loader Include="@(QtRcc)" Condition="'%(QtRcc.Identity)' == 'qmlcachengen_loader'"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate QML cache loader
// -->
<PropertyGroup>
<!--
// $(options) ::= qmlcachegen command line options -->
<options Condition="'@(loader_input)' != ''"
>$(options) @(loader_input->'--resource-file-mapping=&quot;%(Mapping)&quot;',' ')</options>
<options Condition="'@(loader_input)' != ''"
>$(options) @(loader_input->'&quot;%(InputFile)&quot;',' ')</options>
<options Condition="'@(loader)' != ''"
>$(options) @(loader->'-o &quot;%(QmlCacheLoaderFile)&quot;')</options>
<!--
// $(run_parallel) ::= run qmlcachegen in a parallel process
// $(run_single) ::= run qmlcachegen in single process mode -->
<run_parallel Condition="'@(QtQmlCacheLoader)' != ''
AND '%(loader.ParallelProcess)' == 'true' AND '$(SelectedFiles)' == ''">true</run_parallel>
<run_single Condition="'@(QtQmlCacheLoader)' != ''
AND ('%(loader.ParallelProcess)' != 'true' OR '$(SelectedFiles)' != '')">true</run_single>
<!--
// $(dependencies_changed) ::= source QRC files changed status
// $(input_changed) ::= source QRC files input changed status -->
<dependencies_changed>@(loader_input->'%(DependenciesChanged)')</dependencies_changed>
<input_changed>@(loader_input->'%(InputChanged)')</input_changed>
<input_changed Condition="!Exists('@(loader->'%(QmlCacheLoaderFile)')')">true</input_changed>
<is_selected>@(loader_input->'%(IsSelected)')</is_selected>
<!--// Get relative path to output -->
<cache_loader_path>@(loader->'%(QmlCacheLoaderFile)')</cache_loader_path>
<output_relative
>$([MSBuild]::MakeRelative($(ProjectDir), $(cache_loader_path)).TrimStart('\'))</output_relative>
</PropertyGroup>
<ItemGroup>
<!--
// Create work item to generate QML cache loader -->
<QtWork
Include="qmlcachengen_loader"
Condition="'@(loader_input)' != ''
AND $(is_selected.Contains('true'))">
<WorkType>qmlcachengen_loader</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtToolsPath)\qmlcachegen.exe</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
>@(loader->'%(QTDIR)')\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<OutputFile>@(loader->'%(QmlCacheLoaderFile)')</OutputFile>
<Message>@(loader->'%(QmlCacheLoaderMessage)')</Message>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
<DisableLog>true</DisableLog>
<DependenciesChanged>$(dependencies_changed.Contains('true'))</DependenciesChanged>
<InputChanged>$(input_changed.Contains('true'))</InputChanged>
<ClCompile Condition="'%(loader.DynamicSource)' != 'false'">$(output_relative)</ClCompile>
<DependsOn>@(loader_input->'%(Inputs)')</DependsOn>
</QtWork>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<ItemGroup>
<loader_mapping_option Remove="@(mapping_option)"/>
<loader_input_option Remove="@(loader_input_option)"/>
<loader Remove="@(loader)"/>
<QtRcc Remove="qmlcachengen_loader"/>
</ItemGroup>
<PropertyGroup>
<options/>
<run_parallel/>
<run_single/>
<dependencies_changed/>
<input_changed/>
<cache_loader_path/>
<output_relative/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtQmlSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputModified flag for modified files (i.e. Inputs newer than Outputs)
// -->
<Target Name="QtQmlSetModified" DependsOnTargets="QtQmlCachePrepare"
Inputs="%(QtQml.FullPath);%(QtQml.AdditionalDependencies)" Outputs="@(QtQml->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtQmlSetModified %(QtQml.Identity) => @(QtQml->'%(OutputFile)')"/>
<PropertyGroup>
<input_changed/>
</PropertyGroup>
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtQml>
<InputChanged>$(input_changed)</InputChanged>
</QtQml>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<input_changed/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtQml
/////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Target Name="QtQml" DependsOnTargets="QtQmlSetModified"
Inputs="%(QtQml.FullPath);%(QtQml.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtQml->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtQml %(QtQml.Identity) => @(QtQml->'%(OutputFile)')" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Set DependenciesChanged flag for modified files or dependencies
// -->
<PropertyGroup>
<dependencies_changed/>
</PropertyGroup>
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate QML cache
// -->
<PropertyGroup>
<!--
// $(options) ::= qmlcachegen command line options -->
<options Condition="'@(QtQml)' != ''"
>$(options) --resource=&quot;%(ResourceFile)&quot;</options>
<options Condition="'@(QtQml)' != ''"
>$(options) &quot;%(FullPath)&quot;</options>
<options Condition="'@(QtQml)' != ''"
>$(options) -o &quot;%(OutputFile)&quot;</options>
<!--
// $(run_parallel) ::= run qmlcachegen in a parallel process
// $(run_single) ::= run qmlcachegen in single process mode -->
<run_parallel Condition="'@(QtQml)' != ''
AND '%(QtQml.ParallelProcess)' == 'true' AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<run_single Condition="'@(QtQml)' != ''
AND ('%(QtQml.ParallelProcess)' != 'true' OR '$(SelectedFiles)' != '')"
>true</run_single>
<!--// Get relative path to output -->
<output_relative
>$([MSBuild]::MakeRelative($(ProjectDir), %(QtQml.OutputFile)).TrimStart('\'))</output_relative>
</PropertyGroup>
<ItemGroup>
<!--
// Create work item to generate QML cache -->
<QtWork
Include="@(QtQml)"
Condition="'@(QtQml)' != ''
AND '%(QtQml.IsSelected)' == 'true'">
<WorkType>qmlcachegen</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtToolsPath)\qmlcachegen.exe</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'"
>%(QtQml.QTDIR)\bin\qmlcachegen.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtQml.Message)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
<ClCompile Condition="'%(QtQml.DynamicSource)' != 'false'">$(output_relative)</ClCompile>
</QtWork>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<dependencies_changed/>
<options/>
<run_parallel/>
<run_single/>
<output_relative/>
</PropertyGroup>
<ItemGroup>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// TARGET QtQmlCache
/////////////////////////////////////////////////////////////////////////////////////////////////
// Root target of QML cache generation
// -->
<Target Name="QtQmlCache"
DependsOnTargets="QtQmlCacheLoader;QtQml"
BeforeTargets="QtRcc">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## QtQmlCache" />
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterQml)' != ''"
Project="$(QtMsBuildTargets_AfterQml)"/>
</Project>

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Fail-safe import of private definitions
// -->
<Import
Condition="'$(QtPrivateLoaded)' != 'true'"
Project="$(MSBuildThisFileDirectory)\qt_private.props"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Defaults for project version constants
// -->
<PropertyGroup>
<QtVsProjectVersion
Condition="'$(QtVsProjectVersion)' == ''"
>0</QtVsProjectVersion>
<QtVsProjectMinVersion_Settings
Condition="'$(QtVsProjectMinVersion_Settings)' == ''"
>0</QtVsProjectMinVersion_Settings>
<QtVsProjectMinVersion_ClProperties
Condition="'$(QtVsProjectMinVersion_ClProperties)' == ''"
>0</QtVsProjectMinVersion_ClProperties>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt Common Targets
// -->
<Import Project="qt_globals.targets"/>
<Import Project="qt_settings.targets"/>
<Import Project="qt_tasks.targets"/>
<Import Project="qt_vars.targets"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import subfolder targets
// -->
<Import
Condition="'$(VisualStudioVersion)' != '12.0' AND '$(VisualStudioVersion)' != '14.0'"
Project="$(QtMsBuildTargets)"/>
<ImportGroup
Condition="'$(VisualStudioVersion)' == '12.0' OR '$(VisualStudioVersion)' == '14.0'">
<!--
// WORKAROUND: In VS 2013 and VS 2015 importing a list of files does not work
// REMOVE when support for VS 2015 is dropped
-->
<Import Project="$(MSBuildThisFileDirectory)\moc\qtmoc.targets"/>
<Import Project="$(MSBuildThisFileDirectory)\rcc\qtrcc.targets"/>
<Import Project="$(MSBuildThisFileDirectory)\qml\qtqml.targets"/>
<Import Project="$(MSBuildThisFileDirectory)\repc\qtrepc.targets"/>
<Import Project="$(MSBuildThisFileDirectory)\uic\qtuic.targets"/>
<Import Project="$(MSBuildThisFileDirectory)\translation\qttranslation.targets"/>
</ImportGroup>
</Project>

@ -0,0 +1,140 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Default values of Qt settings
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<QtDefaultsLoaded>true</QtDefaultsLoaded>
<!--// Path of Qt binary files -->
<QtPathBinaries Condition="'$(QtPathBinaries)' == ''"
>bin</QtPathBinaries>
<QtPathLibraryExecutables Condition="'$(QtPathLibraryExecutables)' == ''"
>bin</QtPathLibraryExecutables>
<!--// Extract Qt variables from qmake-generated Makefile
// Syntax: < var_name > [ = [ makefile_name ] / < pattern > / < replace > / ] -->
<QMake_DEFINES_
>DEFINES=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/</QMake_DEFINES_>
<QMake_INCLUDEPATH_
>INCLUDEPATH=INCPATH/-(?:iquote|isystem|idirafter|I)\s*(\x22[^\x22]+\x22|[^\s]+)/$1/</QMake_INCLUDEPATH_>
<QMake_LIBS_
>LIBS=/(?:(?:\/LIBPATH:|-L)(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/</QMake_LIBS_>
<QMake_LIBPATH_
>LIBPATH=LIBS/(?:\/LIBPATH:|-L)(\x22[^\x22]+\x22|[^\s]+)/$1/</QMake_LIBPATH_>
<QtVars
Condition="'$(QtVars)' == ''"
>$(QMake_DEFINES_);$(QMake_INCLUDEPATH_);$(QMake_LIBS_);$(QMake_LIBPATH_)</QtVars>
<!--// Default Qt version -->
<QtVersionsRegKey Condition="'$(QtVersionsRegKey)' == ''"
>HKEY_CURRENT_USER\Software\Digia\Versions</QtVersionsRegKey>
<DefaultQtVersion Condition="'$(DefaultQtVersion)' == ''"
>$([MSBuild]::GetRegistryValue('$(QtVersionsRegKey)','DefaultQtVersion'))</DefaultQtVersion>
<!--// Qt build config -->
<QtBuildConfig Condition="'$(Configuration)' == 'Debug'">debug</QtBuildConfig>
<QtBuildConfig Condition="'$(Configuration)' != 'Debug'">release</QtBuildConfig>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Default item metadata
// -->
<ItemDefinitionGroup>
<!--// C++ -->
<ClCompile>
<PreprocessorDefinitions
>$(Qt_DEFINES_);%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(QtQMLDebugEnable)' == 'true'"
>QT_QML_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories
>$(Qt_INCLUDEPATH_);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<!--// Linker (.obj files) -->
<Link>
<AdditionalDependencies
>$(Qt_LIBS_);%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories
>$(Qt_LIBPATH_);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SharedLibrarySearchPath
>$(Qt_LIBPATH_);%(SharedLibrarySearchPath)</SharedLibrarySearchPath>
</Link>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Read subfolder dependencies (qt_import.props)
// -->
<PropertyGroup
Condition="'$(VisualStudioVersion)' != '12.0' AND '$(VisualStudioVersion)' != '14.0'">
<SubFolder>$([System.IO.Directory]::GetDirectories('$(MSBuildThisFileDirectory)'))</SubFolder>
<SubFolderImports Condition="'$(SubFolder)' != ''"
>
$([System.String]::Join(
'\qt_import.props;',
$(SubFolder.Split(';'))))\qt_import.props
</SubFolderImports>
<QtImports>$(SubFolderImports.Split(';'))</QtImports>
<SubFolder/>
<SubFolderImports/>
</PropertyGroup>
<Import
Condition="'$(VisualStudioVersion)' != '12.0' AND '$(VisualStudioVersion)' != '14.0'"
Project="$(QtImports)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import subfolder props
// -->
<Import
Condition="'$(VisualStudioVersion)' != '12.0' AND '$(VisualStudioVersion)' != '14.0'"
Project="$(QtMsBuildProps)"/>
<ImportGroup
Condition="'$(VisualStudioVersion)' == '12.0' OR '$(VisualStudioVersion)' == '14.0'">
<!--
// WORKAROUND: In VS 2013 and VS 2015 importing a list of files does not work
// REMOVE when support for VS 2015 is dropped
-->
<Import Project="$(MSBuildThisFileDirectory)\moc\qtmoc.props"/>
<Import Project="$(MSBuildThisFileDirectory)\rcc\qtrcc.props"/>
<Import Project="$(MSBuildThisFileDirectory)\qml\qtqml.props"/>
<Import Project="$(MSBuildThisFileDirectory)\repc\qtrepc.props"/>
<Import Project="$(MSBuildThisFileDirectory)\uic\qtuic.props"/>
<Import Project="$(MSBuildThisFileDirectory)\translation\qttranslation.props"/>
</ImportGroup>
</Project>

@ -0,0 +1,631 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
/// Qt/MSBuild global definitions
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Build dependencies
// -->
<PropertyGroup>
<BuildDependsOn>
QtVersion;
$(BuildDependsOn);
Qt
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
QtClean
</CleanDependsOn>
<DesignTimeBuildInitTargets>
$(DesignTimeBuildInitTargets);
Qt
</DesignTimeBuildInitTargets>
<ComputeCompileInputsTargets>
$(ComputeCompileInputsTargets);
Qt
</ComputeCompileInputsTargets>
<BeforeClCompileTargets>
$(BeforeClCompileTargets);
Qt
</BeforeClCompileTargets>
<ComputeLinkInputsTargets>
$(ComputeLinkInputsTargets);
Qt
</ComputeLinkInputsTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<Import Project="..\version.targets" Condition="Exists('..\version.targets')"/>
<PropertyGroup>
<QtMsBuildVersion>$(QtVSToolsVersion)</QtMsBuildVersion>
<QtDebug Condition="'$(QtDebug)' == ''">false</QtDebug>
<QtLogFilePath Condition="'$(QtLogFilePath)' == ''"
>$([System.IO.Path]::Combine($(ProjectDir),$(IntDir)qt_work.log))</QtLogFilePath>
<QtMaxProcs Condition="'$(QtMaxProcs)' == ''"
>$([System.Environment]::ProcessorCount)</QtMaxProcs>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtGetDefaultClCompile
/////////////////////////////////////////////////////////////////////////////////////////////////
// Get default C++ properties
// -->
<Target Name="QtGetDefaultClCompile">
<ItemGroup>
<ClCompile Include="DefaultClCompile"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtClean
/////////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up from previous build
// -->
<Target Name="QtClean">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## Qt Clean"/>
<Delete Files="$(QtLogFilePath)"/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVersion
/////////////////////////////////////////////////////////////////////////////////////////////////
// Print debug message with Qt/MSBuild version
// -->
<Target Name="QtVersion">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="Qt/MSBuild v$(QtMsBuildVersion) ($(MSBuildThisFileDirectory))"/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare Qt build: read and parse work log file
// -->
<Target Name="QtPrepare"
Condition="'$(QtSkipWork)' != 'true'"
DependsOnTargets="$(QtDependsOn)"
BeforeTargets="QtWorkPrepare">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="#### QtPrepare"/>
<CriticalSection Lock="true" Name="$(ProjectGuid)" />
<ReadLinesFromFile File="$(QtLogFilePath)">
<Output TaskParameter="Lines" ItemName="QtLogData"/>
</ReadLinesFromFile>
<ItemGroup Condition="'@(QtLogData)' != ''">
<QtWorkLog
Include="@(QtLogData->'$([System.String]::Copy('%(QtLogData.Identity)').Split('|')[0])')">
<Hash>$([System.String]::Copy('%(QtLogData.Identity)').Split('|')[1])</Hash>
</QtWorkLog>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtWorkPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Analyze work request and decide if the Qt tool needs to be called or if the output from the
// previous call is still valid.
// -->
<Target Name="QtWorkPrepare" DependsOnTargets="$(QtDependsOn);$(QtBuildTargets)"
Condition="'$(QtSkipWork)' != 'true'"
Inputs="%(QtWork.WorkType)(%(QtWork.Identity))"
Outputs="@(QtWork->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true' AND '@(QtWork)' != ''"
Text="## QtWorkPrepare %(QtWork.Identity)" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Calculate hash for the requested work item, based on its associated tool and options
// -->
<GetItemHash Condition="'@(QtWork)' != ''"
Item="@(QtWork)" Keys="Identity;WorkType;ToolPath;Options">
<Output TaskParameter="Hash" PropertyName="work_hash" />
</GetItemHash>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Try to find entry in Qt work log for the requested work item; get logged hash
// -->
<PropertyGroup Condition="'@(QtWork)' != ''">
<work_key>@(QtWork->'%(WorkType)(%(Identity))')</work_key>
<dependencies_changed>@(QtWork->'%(DependenciesChanged)')</dependencies_changed>
<input_changed>@(QtWork->'%(InputChanged)')</input_changed>
<project_changed
Condition="'$(dependencies_changed)' == 'true' AND '$(input_changed)' != 'true'"
>true</project_changed>
</PropertyGroup>
<FindInList Condition="'@(QtWork)' != '' AND '$(input_changed)' != 'true'"
CaseSensitive="false" List="@(QtWorkLog)" ItemSpecToFind="$(work_key)">
<Output TaskParameter="ItemFound" ItemName="log_entry"/>
</FindInList>
<PropertyGroup Condition="'@(QtWork)' != ''">
<log_hash Condition="'@(log_entry)' != ''">@(log_entry->'%(Hash)')</log_hash>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip work item if:
// * work is not needed:
// - input was not modified
// - AND project was not modified OR command line did not change (i.e. hashes are the same)
// * OR we're in a design-time build
// -->
<PropertyGroup>
<do_work
Condition="'$(input_changed)' == 'true'
OR ('$(project_changed)' == 'true' AND '$(log_hash)' != '$(work_hash)')"
>true</do_work>
<skip_work
Condition="'$(do_work)' != 'true' OR '$(DesignTimeBuild)' == 'true'"
>true</skip_work>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Skip work item
// -->
<ItemGroup Condition="'@(QtWork)' != '' AND '$(skip_work)' == 'true'">
<QtWorkResult Include="@(QtWork)">
<ExitCode>0</ExitCode>
<Skipped>true</Skipped>
</QtWorkResult>
<QtWork Remove="@(QtWork)" />
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate new work log entry and ensure path to output exists
// -->
<ItemGroup Condition="'@(QtWork)' != '' AND '$(skip_work)' != 'true'">
<QtWorkLog Remove="$(work_key)"/>
<QtWorkLog Include="$(work_key)">
<Hash>$(work_hash)</Hash>
</QtWorkLog>
</ItemGroup>
<MakeDir Condition="'@(QtWork)' != '' AND '$(skip_work)' != 'true'"
Directories="$([System.IO.Path]::GetDirectoryName(%(QtWork.OutputFile)))"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<work_key/>
<log_hash/>
<dependencies_changed/>
<input_changed/>
<project_changed/>
<do_work/>
<skip_work/>
</PropertyGroup>
<ItemGroup>
<log_entry Remove="@(log_entry)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtWork
/////////////////////////////////////////////////////////////////////////////////////////////////
// Run Qt tools and add dynamic C++ sources to build
// -->
<Target Name="QtWork"
Condition="'$(QtSkipWork)' != 'true'"
DependsOnTargets="QtWorkPrepare;QtGetDefaultClCompile">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## Qt Build $(QtBuildTargets.Replace(';',' ').Trim())" />
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run work locally in parallel processes
// -->
<QtRunWork
Condition="'$(ApplicationType)' != 'Linux' AND '@(QtWork)' != ''
AND '%(QtWork.ParallelBuild)' == 'true'
AND '$(DesignTimeBuild)' != 'true'"
QtWork="@(QtWork)" QtMaxProcs="$(QtMaxProcs)" QtDebug="$(QtDebug)">
<Output TaskParameter="Result" ItemName="QtWorkResult" />
</QtRunWork>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run work locally in a single process
// -->
<QtRunWork
Condition="'$(ApplicationType)' != 'Linux' AND '@(QtWork)' != ''
AND '%(QtWork.ParallelBuild)' != 'true'
AND '$(DesignTimeBuild)' != 'true'"
QtWork="@(QtWork)" QtMaxProcs="1" QtDebug="$(QtDebug)">
<Output TaskParameter="Result" ItemName="QtWorkResult" />
</QtRunWork>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run work in build host
// -->
<!-- // Translate local paths to host paths -->
<Flatten
Condition="'$(ApplicationType)' == 'Linux'
AND '@(QtWork)' != '' AND '$(DesignTimeBuild)' != 'true'"
Items="@(QtWork)" Metadata="ResourceFiles">
<Output TaskParameter="Result" ItemName="ResourceFiles"/>
</Flatten>
<ItemGroup
Condition="'$(ApplicationType)' == 'Linux'
AND '@(QtWork)' != '' AND '$(DesignTimeBuild)' != 'true'">
<LocalPath Include="%(QtWork.Identity)">
<Name>InputPath</Name>
<Item>%(QtWork.Identity)</Item>
<Value>%(QtWork.Identity)</Value>
</LocalPath>
<LocalPath
Condition="'%(ResourceFiles.Identity)' != ''"
Include="@(ResourceFiles->'%(Item)')">
<Name>InputPath</Name>
<Item>@(ResourceFiles->'%(Value)')</Item>
<Value>@(ResourceFiles->'%(Value)')</Value>
</LocalPath>
<LocalPath Include="%(QtWork.Identity)">
<Name>OutputPath</Name>
<Item>%(QtWork.OutputFile)</Item>
<Value>%(QtWork.OutputFile)</Value>
</LocalPath>
</ItemGroup>
<HostTranslatePaths
Condition="'$(ApplicationType)' == 'Linux'
AND '@(QtWork)' != '' AND '$(DesignTimeBuild)' != 'true'"
Items="@(LocalPath)" Names="InputPath;OutputPath">
<Output TaskParameter="Result" ItemName="HostPath"/>
</HostTranslatePaths>
<ItemGroup>
<InputPath Include="@(HostPath->WithMetadataValue('Name', 'InputPath'))" />
<OutputPath Include="@(HostPath->WithMetadataValue('Name', 'OutputPath'))" />
</ItemGroup>
<!-- // Run command -->
<HostExec
Condition="'$(ApplicationType)' == 'Linux'
AND '%(Identity)' != '' AND '$(DesignTimeBuild)' != 'true'"
Message="@(QtWork->'%(WorkType) %(Identity)')"
Command="@(QtWork->'%(ToolPath) %(Options)')"
Inputs="@(InputPath)"
Outputs="@(OutputPath)"
RemoteTarget="$(ResolvedRemoteTarget)"
RemoteProjectDir="$(_ResolvedRemoteProjectDir)">
</HostExec>
<!-- // Generate result item -->
<ItemGroup
Condition="'$(ApplicationType)' == 'Linux'
AND '@(QtWork)' != '' AND '$(DesignTimeBuild)' != 'true'">
<QtWorkResult Include="@(QtWork)">
<ExitCode>0</ExitCode>
</QtWorkResult>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Save tracking log of files read during build; used by VS to check the up-to-date status
// -->
<ItemGroup Condition="'$(DesignTimeBuild)' != 'true' AND '$(QtVSToolsBuild)' != 'true'">
<read_log Include="^%(QtWorkResult.FullPath);%(QtWorkResult.AdditionalDependencies)"
Condition="'%(QtWorkResult.ExitCode)' == '0' AND '%(QtWorkResult.DisableLog)' != 'true'">
<WorkType>%(QtWorkResult.WorkType)</WorkType>
</read_log>
<read_log>
<Path Condition="$([System.String]::Copy('%(Identity)').StartsWith('^'))">%(Identity)</Path>
<Path Condition="!$([System.String]::Copy('%(Identity)').StartsWith('^'))"
>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','%(Identity)'))</Path>
</read_log>
</ItemGroup>
<WriteLinesToFile
Condition="'@(read_log)' != ''"
File="$(TLogLocation)%(read_log.WorkType).read.1u.tlog"
Lines="@(read_log->MetaData('Path')->ToUpperInvariant());"
Overwrite="true"
Encoding="Unicode"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Save tracking log of files written during build; used by VS to check the up-to-date status
// -->
<ItemGroup Condition="'$(DesignTimeBuild)' != 'true' AND '$(QtVSToolsBuild)' != 'true'">
<write_log Include="^%(QtWorkResult.FullPath);%(QtWorkResult.OutputFile)"
Condition="'%(QtWorkResult.ExitCode)' == '0' AND '%(QtWorkResult.DisableLog)' != 'true'">
<WorkType>%(QtWorkResult.WorkType)</WorkType>
</write_log>
<write_log>
<Path Condition="$([System.String]::Copy('%(Identity)').StartsWith('^'))">%(Identity)</Path>
<Path Condition="!$([System.String]::Copy('%(Identity)').StartsWith('^'))"
>$([System.IO.Path]::Combine('$(MSBuildProjectDirectory)','%(Identity)'))</Path>
</write_log>
</ItemGroup>
<WriteLinesToFile Condition="'@(write_log)' != ''"
File="$(TLogLocation)%(write_log.WorkType).write.1u.tlog"
Lines="@(write_log->MetaData('Path')->ToUpperInvariant());"
Overwrite="true" Encoding="Unicode"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Log output files; this is used by VS to determine what files to delete on "Clean"
// -->
<ItemGroup Condition="'$(DesignTimeBuild)' != 'true' AND '$(QtVSToolsBuild)' != 'true'">
<clean_log Include="%(QtWorkResult.OutputFile)"
Condition="'%(QtWorkResult.ExitCode)' == '0'">
<Source>@(QtWorkResult, '|')</Source>
</clean_log>
</ItemGroup>
<WriteLinesToFile Condition="'@(clean_log)' != ''"
File="$(TLogLocation)$(ProjectName).write.1u.tlog"
Lines="^%(clean_log.Source);@(clean_log->'%(Fullpath)')"
Encoding="Unicode"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Log calls to Qt tools; used in QtWorkPrepare to detect changes to the options of Qt tools
// -->
<WriteLinesToFile Condition="'@(QtWorkLog)' != '' AND '$(DesignTimeBuild)' != 'true'"
File="$(QtLogFilePath)"
Lines="@(QtWorkLog->'%(Identity)|%(Hash)')"
Overwrite="true" Encoding="Unicode"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate build error if a Qt tool did not terminate correctly
// -->
<Error
Condition="'%(QtWorkResult.ExitCode)' != ''
AND '%(QtWorkResult.ExitCode)' != '0'
AND '$(DesignTimeBuild)' != 'true'"
File="%(QtWorkResult.Identity)" Code="%(QtWorkResult.ExitCode)"
Text="%(QtWorkResult.WorkType) (%(QtWorkResult.ToolPath))"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Add dynamic C++ sources to build
// -->
<ItemGroup>
<QtWork_ClCompile
Condition="'%(QtWorkResult.ExitCode)' == '0' AND '%(QtWorkResult.ClCompile)' != ''"
Include="@(QtWorkResult->'%(ClCompile)')"/>
<QtWork_ClCompile
Condition="Exists('$(QtVarsOutputDir)\qtvars_plugin_import.cpp')"
Include="$(QtVarsOutputDir)\qtvars_plugin_import.cpp"/>
</ItemGroup>
<ItemGroup Condition="'$(ApplicationType)' == 'Linux'">
<QtWork_ClCompile Condition="'%(QtWork_ClCompile.ObjectFileName)' == ''">
<ObjectFileName>$(IntDir)%(Filename).o</ObjectFileName>
</QtWork_ClCompile>
</ItemGroup>
<!-- // Copy default C++ compiler properties -->
<Expand Condition="'@(QtWork_ClCompile)' != ''"
Items="@(QtWork_ClCompile)"
BaseItem="@(ClCompile->WithMetadataValue('Identity', 'DefaultClCompile'))">
<Output TaskParameter="Result" ItemName="QtWork_ClCompile_Expanded"/>
</Expand>
<!-- // Force pre-compiled header include -->
<ItemGroup Condition="'$(ApplicationType)' != 'Linux'">
<QtWork_ClCompile_Expanded>
<AdditionalIncludeDirectories
>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ForcedIncludeFiles Condition="'%(PrecompiledHeader)' == 'Use'"
>%(PrecompiledHeaderFile)</ForcedIncludeFiles>
<AdditionalOptions
>%(QtWork_ClCompile_Expanded.AdditionalCppOptions)</AdditionalOptions>
</QtWork_ClCompile_Expanded>
</ItemGroup>
<!-- // Add C++ source items and clean-up temp items -->
<ItemGroup>
<ClCompile Include="@(QtWork_ClCompile_Expanded)"/>
<QtWork_ClCompile_Expanded Remove="@(QtWork_ClCompile_Expanded)"/>
<QtWork_ClCompile Remove="@(QtWork_ClCompile)"/>
</ItemGroup>
<!--// If sources were manually selected (e.g. by the 'Compile' option in the context menu for
// project items), add generated C++ sources to the list of selected files -->
<PropertyGroup Condition="'$(SelectedFiles)' != ''">
<SelectedClCompile>@(QtWorkResult->'%(ClCompile)')</SelectedClCompile>
</PropertyGroup>
<PropertyGroup Condition="'$(SelectedClCompile)' != ''">
<SelectedFiles>$(SelectedFiles);$(SelectedClCompile)</SelectedFiles>
</PropertyGroup>
<ItemGroup Condition="'$(SelectedClCompile)' != ''">
<SelectedFiles Include="$(SelectedClCompile)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Update C++ sources with generated information
// -->
<PropertyGroup>
<QtIncludePath>@(QtIncludePath->Distinct())</QtIncludePath>
</PropertyGroup>
<ItemGroup>
<ClCompile_Updated Include="@(ClCompile)">
<AdditionalIncludeDirectories
>$(QtIncludePath);%(ClCompile.AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile_Updated>
<ClCompile Remove="@(ClCompile)"/>
<ClCompile Include="@(ClCompile_Updated)"/>
<ClCompile_Updated Remove="@(ClCompile_Updated)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<ItemGroup>
<QtWork Remove="@(QtWork)"/>
<QtWorkResult Remove="@(QtWorkResult)"/>
<QtWorkLog Remove="@(QtWorkLog)"/>
<read_log Remove="@(read_log)"/>
<write_log Remove="@(write_log)"/>
<clean_log Remove="@(clean_log)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET Qt
/////////////////////////////////////////////////////////////////////////////////////////////////
// Root Qt target
// -->
<Target Name="Qt" DependsOnTargets="QtPrepare;QtWork" BeforeTargets="FixupCLCompileOptions">
<ItemGroup>
<ClCompile Remove="DefaultClCompile" />
</ItemGroup>
<CriticalSection Lock="false" Name="$(ProjectGuid)" />
<OnError ExecuteTargets="QtLeaveCriticalSection_OnError"/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtOuterBuild
/////////////////////////////////////////////////////////////////////////////////////////////////
// Run targets in $(QtOuterBuildDependsOn) and then recursively invoke build
// -->
<Target Name="QtOuterBuild" DependsOnTargets="$(QtOuterBuildDependsOn)">
<!--// Invoke inner build: recursive build in second MSBuild instance -->
<MSBuild
Projects="$(MSBuildProjectFullPath)"
Targets="Build"
Properties="QtInnerBuild=$(MSBuildProjectFullPath);RandomFileName=$(RandomFileName);BuildProjectReferences=false">
</MSBuild>
<OnError ExecuteTargets="QtLeaveCriticalSection_OnError"/>
</Target>
<PropertyGroup
Condition="'$(QtInnerBuild)' == '' AND '$(DesignTimeBuild)' != 'true'">
<!--// Outer build: invoke inner build -->
<BuildDependsOn>
$(QtOuterBuildPrepare);
QtOuterBuild;
$(QtOuterBuildFinalize)
</BuildDependsOn>
<QtInnerBuild>$(MSBuildProjectFullPath)</QtInnerBuild>
<RandomFileName>$([System.IO.Path]::GetRandomFileName())</RandomFileName>
</PropertyGroup>
<PropertyGroup
Condition="'$(QtInnerBuild)' != '$(MSBuildProjectFullPath)' AND '$(DesignTimeBuild)' != 'true'">
<!--// Dependent project inner build: skip build -->
<BuildDependsOn>$(QtOuterBuildPrepare);$(QtOuterBuildFinalize)</BuildDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtEnterCriticalSection_... / QtLeaveCriticalSection_InitializeBuildStatus
/////////////////////////////////////////////////////////////////////////////////////////////////
// Synchronize calls to InitializeBuildStatus
// -->
<Target Name="QtEnterCriticalSection_InitializeBuildStatus" BeforeTargets="InitializeBuildStatus">
<CriticalSection Lock="true" Name="$(ProjectGuid)" />
</Target>
<Target Name="QtLeaveCriticalSection_InitializeBuildStatus" AfterTargets="InitializeBuildStatus">
<CriticalSection Lock="false" Name="$(ProjectGuid)" />
</Target>
<PropertyGroup>
<!--// Schedule critical section enter/leave targets around InitializeBuildStatus -->
<QtSync_InitializeBuildStatus>
QtEnterCriticalSection_InitializeBuildStatus;
InitializeBuildStatus;
QtLeaveCriticalSection_InitializeBuildStatus
</QtSync_InitializeBuildStatus>
<!--// Replace 'InitializeBuildStatus' with '$(QtSync_InitializeBuildStatus)' -->
<BuildDependsOn>
$([MSBuild]::Unescape(
$([System.Text.RegularExpressions.Regex]::Replace(' $(BuildDependsOn) ',
'(?&lt;!\w)InitializeBuildStatus(?!\w)', $(QtSync_InitializeBuildStatus)))))
</BuildDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtEnterCriticalSection_... / QtLeaveCriticalSection_FinalizeBuildStatus
/////////////////////////////////////////////////////////////////////////////////////////////////
// Synchronize calls to FinalizeBuildStatus
// -->
<Target Name="QtEnterCriticalSection_FinalizeBuildStatus" BeforeTargets="FinalizeBuildStatus">
<CriticalSection Lock="true" Name="$(ProjectGuid)" />
</Target>
<Target Name="QtLeaveCriticalSection_FinalizeBuildStatus" AfterTargets="FinalizeBuildStatus">
<CriticalSection Lock="false" Name="$(ProjectGuid)" />
</Target>
<PropertyGroup>
<!--// Schedule critical section enter/leave targets around FinalizeBuildStatus -->
<QtSync_FinalizeBuildStatus>
QtEnterCriticalSection_FinalizeBuildStatus;
FinalizeBuildStatus;
QtLeaveCriticalSection_FinalizeBuildStatus
</QtSync_FinalizeBuildStatus>
<!--// Replace 'FinalizeBuildStatus' with '$(QtSync_FinalizeBuildStatus)' -->
<BuildDependsOn>
$([MSBuild]::Unescape(
$([System.Text.RegularExpressions.Regex]::Replace(' $(BuildDependsOn) ',
'(?&lt;!\w)FinalizeBuildStatus(?!\w)', $(QtSync_FinalizeBuildStatus)))))
</BuildDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtLeaveCriticalSection_OnError
/////////////////////////////////////////////////////////////////////////////////////////////////
// Fail-safe release of critical section lock, to be used in OnError tasks
// -->
<Target Name="QtLeaveCriticalSection_OnError">
<CriticalSection Lock="false" Name="$(ProjectGuid)" />
</Target>
</Project>

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Item type definition and default values
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<QtPrivateLoaded>true</QtPrivateLoaded>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Fail-safe import of default values
// -->
<Import
Condition="'$(QtDefaultsLoaded)' != 'true'"
Project="$(MSBuildThisFileDirectory)\qt_defaults.props"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt VS Project Format Version
// -->
<PropertyGroup>
<QtVsProjectVersion>0</QtVsProjectVersion>
<QtVsProjectMinVersion_Settings>300</QtVsProjectMinVersion_Settings>
<QtVsProjectMinVersion_ClProperties>300</QtVsProjectMinVersion_ClProperties>
</PropertyGroup>
<PropertyGroup Condition="'$(Keyword)' != ''">
<QtVsProjectVersion Condition="'$(Keyword)' == 'Qt4VSv1.0'">200</QtVsProjectVersion>
<QtVsProjectVersion Condition="$(Keyword.StartsWith('QtVS_v'))"
>$([System.Convert]::ToInt32($(Keyword.Substring(6))))</QtVsProjectVersion>
<QtVsProjectSettings Condition="$(QtVsProjectVersion) &gt;= $(QtVsProjectMinVersion_Settings)"
>true</QtVsProjectSettings>
<QtVsProjectSettings Condition="$(QtVsProjectVersion) &lt; $(QtVsProjectMinVersion_Settings)"
>false</QtVsProjectSettings>
<QtVsProjectClProperties
Condition="$(QtVsProjectVersion) &gt;= $(QtVsProjectMinVersion_ClProperties)"
>true</QtVsProjectClProperties>
<QtVsProjectClProperties
Condition="$(QtVsProjectVersion) &lt; $(QtVsProjectMinVersion_ClProperties)"
>false</QtVsProjectClProperties>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup Qt installation path
// -->
<PropertyGroup Condition="'$(QtVsProjectSettings)' == 'true'">
<QtInstallDir Condition="Exists('$(QtInstall)')">$(QtInstall)</QtInstallDir>
<QtInstallRegKey Condition="'$(QtInstall)' != ''"
>$(QtVersionsRegKey)\$(QtInstall)</QtInstallRegKey>
<QtInstallRegDir Condition="'$(QtInstallDir)' == '' AND '$(QtInstallRegKey)' != ''"
>$([MSBuild]::GetRegistryValue('$(QtInstallRegKey)','InstallDir'))</QtInstallRegDir>
<QtInstallDir
Condition="'$(ApplicationType)' != 'Linux' AND '$(QtInstallDir)' == ''
AND Exists('$(QtInstallRegDir)')"
>$(QtInstallRegDir)</QtInstallDir>
<QtInstallDir
Condition="'$(ApplicationType)' == 'Linux' AND '$(QtInstallDir)' == ''
AND ( $(QtInstallRegDir.StartsWith('SSH:')) OR $(QtInstallRegDir.StartsWith('WSL:')) )"
>$(QtInstallRegDir.Split(':')[1])</QtInstallDir>
<QtInstallDir
Condition="'$(ApplicationType)' == 'Linux' AND '$(QtInstallDir)' == ''"
>$(QtInstall)</QtInstallDir>
</PropertyGroup>
<PropertyGroup Condition="'$(QtInstallDir)' != ''">
<QtToolsPath Condition="'$(QtToolsPath)' == ''"
>$([System.IO.Path]::Combine('$(QtInstallDir)','$(QtPathBinaries)').Replace('\', '/'))</QtToolsPath>
<QtDllPath Condition="'$(QtDllPath)' == ''"
>$([System.IO.Path]::Combine('$(QtInstallDir)','$(QtPathLibraryExecutables)').Replace('\', '/'))</QtDllPath>
<QTDIR>$(QtInstallDir)</QTDIR>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt Variables Expansion
// -->
<PropertyGroup Condition="'$(QtVsProjectSettings)' == 'true'">
<!--// Path to Qt variables property file -->
<QtVarsOutputDir Condition="'$(QtVarsOutputDir)' == ''"
>$([System.IO.Path]::Combine('$(ProjectDir)', '$(IntDir)', 'qmake'))</QtVarsOutputDir>
<QtVarsFileName Condition="'$(QtVarsFileName)' == ''"
>qtvars_$(Platform.Replace(' ','_'))_$(Configuration.Replace(' ','_')).props</QtVarsFileName>
<QtVarsFilePath Condition="'$(QtVarsFilePath)' == ''"
>$(QtVarsOutputDir)\$(QtVarsFileName)</QtVarsFilePath>
<!--// Path to temp work folder -->
<QtVarsWorkDirName
>temp</QtVarsWorkDirName>
<QtVarsWorkDir
>$([System.IO.Path]::Combine('$(QtVarsOutputDir)','$(QtVarsWorkDirName)'))</QtVarsWorkDir>
<QtVarsWorkPath
>$(QtVarsWorkDir)\$(QtVarsFileName)</QtVarsWorkPath>
<QtVarsIndexPathDesignTime
>$(QtVarsWorkDir)\$(ProjectGuid.Replace('{','').Replace('}','')).$(ProjectName).designtime.idx</QtVarsIndexPathDesignTime>
<QtVarsDesignTime Condition="Exists('$(QtVarsIndexPathDesignTime)')"
>$([System.String]::Copy($([System.IO.File]::ReadAllText('$(QtVarsIndexPathDesignTime)'))).Replace('&#xD;&#xA;',''))</QtVarsDesignTime>
</PropertyGroup>
<!--// Import Qt variables (full build) -->
<Import
Condition="'$(DesignTimeBuild)' != 'true' AND Exists('$(QtVarsFilePath)')"
Project="$(QtVarsFilePath)"/>
<!--// Import Qt variables (design-time build) -->
<Import
Condition="'$(DesignTimeBuild)' == 'true' AND Exists('$(QtVarsDesignTime)')"
Project="$(QtVarsDesignTime)"/>
<!--// Import Qt variables (fall-back) -->
<Import
Condition=
"'$(DesignTimeBuild)' == 'true' AND !Exists('$(QtVarsDesignTime)') AND Exists('$(QtVarsFilePath)')"
Project="$(QtVarsFilePath)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Add Qt DLL path to debugger definitions
// -->
<PropertyGroup>
<LocalDebuggerEnvironment Condition="'$(QtDllPath)' != ''"
>PATH=%PATH%;$(QtDllPath)&#xD;&#xA;$(LocalDebuggerEnvironment)
</LocalDebuggerEnvironment>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QML debugging
// -->
<PropertyGroup>
<QmlDebug Condition="'$(QtQMLDebugEnable)' == 'true'"
>-qmljsdebugger=file:$(ProjectGuid),block</QmlDebug>
<LocalDebuggerCommandArguments
>$(QmlDebug)</LocalDebuggerCommandArguments>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Outer build
// -->
<PropertyGroup>
<QtOuterBuildPrepare Condition="'$(QtOuterBuildPrepare)' == ''"
>ResolveReferences;PrepareForBuild;InitializeBuildStatus</QtOuterBuildPrepare>
<QtOuterBuildFinalize Condition="'$(QtOuterBuildFinalize)' == ''"
>FinalizeBuildStatus</QtOuterBuildFinalize>
</PropertyGroup>
</Project>

@ -0,0 +1,59 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Add property page for Qt settings
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup
Condition="'$(VisualStudioVersion)' == '12.0' OR '$(VisualStudioVersion)' == '14.0'">
<QtVersionsRegKey
>HKEY_CURRENT_USER\Software\Digia\Versions</QtVersionsRegKey>
<QtVersionNames
>$([MSBuild]::GetRegistryValue('$(QtVersionsRegKey)','VersionNames'))</QtVersionNames>
</PropertyGroup>
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'true'">
<PropertyPageSchema
Condition="'$(VisualStudioVersion)' != '12.0' AND '$(VisualStudioVersion)' != '14.0'"
Include="$(MSBuildThisFileDirectory)qt_settings.xml">
<Context>Project;PropertySheet</Context>
</PropertyPageSchema>
<PropertyPageSchema
Condition="'$(VisualStudioVersion)' == '12.0' OR '$(VisualStudioVersion)' == '14.0'"
Include="$(MSBuildThisFileDirectory)qt_settings_vs2015.xml">
<!--
// WORKAROUND: In VS 2013 and VS 2015 property value providers are not supported
// REMOVE when support for VS 2015 is dropped
-->
<Context>Project;PropertySheet</Context>
</PropertyPageSchema>
</ItemGroup>
</Project>

@ -0,0 +1,158 @@
<?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$
**
****************************************************************************/
-->
<Rule
Name="QtRule10_Settings"
DisplayName="Qt Project Settings"
PageTemplate="generic"
Description="Qt Project Settings"
Order="8"
xmlns="http://schemas.microsoft.com/build/2009/properties">
<Rule.DataSource>
<DataSource Persistence="ProjectFile" Label="QtSettings" HasConfigurationCondition="true"/>
</Rule.DataSource>
<Rule.Categories>
<Category Name="QtSettings_01_General" DisplayName="General"/>
<Category Name="QtSettings_02_Paths" DisplayName="Paths"/>
<Category Name="QtSettings_03_QMake" DisplayName="qmake"/>
<Category Name="QtSettings_04_QML" DisplayName="QML"/>
<Category Name="QtSettings_05_LUpdateLRelease" DisplayName="lupdate/lrelease"/>
</Rule.Categories>
<EnumProperty
Name="Keyword"
DisplayName="Qt VS Project Format Version"
Category="QtSettings_01_General"
ReadOnly="true"
Description="Version of the format of this Qt Visual Studio project.">
<EnumProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="Globals" />
</EnumProperty.DataSource>
<EnumValue Name="Qt4VSv1.0" DisplayName="Version 2.0"/>
<EnumValue Name="QtVS_v300" DisplayName="Version 3.0"/>
<EnumValue Name="QtVS_v301" DisplayName="Version 3.1"/>
<EnumValue Name="QtVS_v302" DisplayName="Version 3.2"/>
<EnumValue Name="QtVS_v303" DisplayName="Version 3.3"/>
<EnumValue Name="QtVS_v304" DisplayName="Version 3.4"/>
</EnumProperty>
<StringProperty
Name="QtLastBackgroundBuild"
DisplayName="Last Background Build"
Category="QtSettings_01_General"
Visible="False">
<StringProperty.DataSource>
<DataSource Persistence="UserFile" Label="QtSettings" HasConfigurationCondition="true"/>
</StringProperty.DataSource>
</StringProperty>
<DynamicEnumProperty
Name="QtInstall"
DisplayName="Qt Installation"
Category="QtSettings_01_General"
EnumProvider="QtVersionProvider"
Description=
"Select Qt installation; can be either a path to an installation directory or a version name registered through the Qt Visual Studio Tools (v2.4 or above).">
</DynamicEnumProperty>
<StringListProperty
Name="QtModules"
Category="QtSettings_01_General"
DisplayName="Qt Modules">
<StringListProperty.ValueEditors>
<ValueEditor EditorType="QtModulesEditor" DisplayName="&lt;Select Modules...&gt;" />
</StringListProperty.ValueEditors>
</StringListProperty>
<EnumProperty
Name="QtBuildConfig"
Category="QtSettings_01_General"
DisplayName="Build Config"
Description="Select whether to use debug or release.">
<EnumValue Name="debug" DisplayName="Debug"/>
<EnumValue Name="release" DisplayName="Release"/>
</EnumProperty>
<BoolProperty
Name="QtDeploy"
Category="QtSettings_01_General"
DisplayName="Run Deployment Tool"
Description="Select whether Qt for Windows Deployment Tool (windeployqt) should be called after build."/>
<StringProperty
Name="QtPathBinaries"
Category="QtSettings_02_Paths"
DisplayName="Qt Binaries"
Description=
"Path to folder containing executables of Qt tools (qmake, moc, etc.) When a non-rooted path is specified, it will be considered relative to the Qt installation directory."/>
<StringProperty
Name="QtPathLibraryExecutables"
Category="QtSettings_02_Paths"
DisplayName="Qt Library Executables"
Description=
"Path to folder containing executable files of Qt modules. When a non-rooted path is specified, it will be considered relative to the Qt installation directory."/>
<StringListProperty
Name="QtHeaderSearchPath"
Category="QtSettings_02_Paths"
DisplayName="Additional Qt header search paths" />
<StringListProperty
Name="QtLibrarySearchPath"
Category="QtSettings_02_Paths"
DisplayName="Additional Qt library search paths" />
<StringListProperty
Name="QtVars"
Category="QtSettings_03_QMake"
DisplayName="Extract Variables"
Description=
"Extract Qt variables from qmake-generated Makefile.
Syntax: &lt; var_name &gt; [ = [ makefile_var_name ] / &lt; pattern &gt; / &lt; replace &gt; / ]"/>
<StringListProperty
Name="QMakeExtraArgs"
Category="QtSettings_03_QMake"
DisplayName="Additional Command Arguments" />
<StringListProperty
Name="QMakeCodeLines"
Category="QtSettings_03_QMake"
DisplayName="Additional Project Settings" />
<BoolProperty
Name="QtQMLDebugEnable"
Category="QtSettings_04_QML"
DisplayName="Enable QML Debugging"
Description="Select whether to launch a QML session when debugging.">
</BoolProperty>
<BoolProperty
Name="QtRunLUpdateOnBuild"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Run lupdate On Build"
Description="Select whether lupdate should be called during build."/>
<StringProperty
Name="QtLUpdateOptions"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Additional lupdate Options"
Description="Additional options passed to lupdate"/>
<StringProperty
Name="QtLReleaseOptions"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Additional lrelease Options"
Description="Additional options passed to lrelease"/>
</Rule>

@ -0,0 +1,156 @@
<?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$
**
****************************************************************************/
-->
<Rule
Name="QtRule10_Settings"
DisplayName="Qt Project Settings"
PageTemplate="generic"
Description="Qt Project Settings"
Order="8"
xmlns="http://schemas.microsoft.com/build/2009/properties">
<Rule.DataSource>
<DataSource Persistence="ProjectFile" Label="QtSettings" HasConfigurationCondition="true"/>
</Rule.DataSource>
<Rule.Categories>
<Category Name="QtSettings_01_General" DisplayName="General"/>
<Category Name="QtSettings_02_Paths" DisplayName="Paths"/>
<Category Name="QtSettings_03_QMake" DisplayName="qmake"/>
<Category Name="QtSettings_04_QML" DisplayName="QML"/>
<Category Name="QtSettings_05_LUpdateLRelease" DisplayName="lupdate/lrelease"/>
</Rule.Categories>
<EnumProperty
Name="Keyword"
DisplayName="Qt VS Project Format Version"
Category="QtSettings_01_General"
ReadOnly="true"
Description="Version of the format of this Qt Visual Studio project.">
<EnumProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="Globals" />
</EnumProperty.DataSource>
<EnumValue Name="Qt4VSv1.0" DisplayName="Version 2.0"/>
<EnumValue Name="QtVS_v300" DisplayName="Version 3.0"/>
<EnumValue Name="QtVS_v301" DisplayName="Version 3.1"/>
<EnumValue Name="QtVS_v302" DisplayName="Version 3.2"/>
<EnumValue Name="QtVS_v303" DisplayName="Version 3.3"/>
<EnumValue Name="QtVS_v304" DisplayName="Version 3.4"/>
</EnumProperty>
<StringProperty
Name="QtLastBackgroundBuild"
DisplayName="Last Background Build"
Category="QtSettings_01_General"
Visible="False">
<StringProperty.DataSource>
<DataSource Persistence="UserFile" Label="QtSettings" HasConfigurationCondition="true"/>
</StringProperty.DataSource>
</StringProperty>
<DynamicEnumProperty
Name="QtInstall"
DisplayName="Qt Installation"
Category="QtSettings_01_General"
EnumProvider="ProjectExpression"
Description=
"Select Qt installation; can be either a path to an installation directory or a version name registered through the Qt Visual Studio Tools (v2.4 or above).">
<DynamicEnumProperty.ProviderSettings>
<NameValuePair Name="Include" Value="$(QtVersionNames)" />
</DynamicEnumProperty.ProviderSettings>
</DynamicEnumProperty>
<StringListProperty
Name="QtModules"
Category="QtSettings_01_General"
DisplayName="Qt Modules">
<StringListProperty.ValueEditors>
<ValueEditor EditorType="QtModulesEditor" DisplayName="&lt;Select Modules...&gt;" />
</StringListProperty.ValueEditors>
</StringListProperty>
<EnumProperty
Name="QtBuildConfig"
Category="QtSettings_01_General"
DisplayName="Build Config"
Description="Select whether to use debug or release.">
<EnumValue Name="debug" DisplayName="Debug"/>
<EnumValue Name="release" DisplayName="Release"/>
</EnumProperty>
<StringProperty
Name="QtPathBinaries"
Category="QtSettings_02_Paths"
DisplayName="Qt Binaries"
Description=
"Path to folder containing executables of Qt tools (qmake, moc, etc.) When a non-rooted path is specified, it will be considered relative to the Qt installation directory."/>
<StringProperty
Name="QtPathLibraryExecutables"
Category="QtSettings_02_Paths"
DisplayName="Qt Library Executables"
Description=
"Path to folder containing executable files of Qt modules. When a non-rooted path is specified, it will be considered relative to the Qt installation directory."/>
<StringListProperty
Name="QtHeaderSearchPath"
Category="QtSettings_02_Paths"
DisplayName="Additional Qt header search paths" />
<StringListProperty
Name="QtLibrarySearchPath"
Category="QtSettings_02_Paths"
DisplayName="Additional Qt library search paths" />
<StringListProperty
Name="QtVars"
Category="QtSettings_03_QMake"
DisplayName="Extract Variables"
Description=
"Extract Qt variables from qmake-generated Makefile.
Syntax: &lt; var_name &gt; [ = [ makefile_name ] / &lt; pattern &gt; / &lt; replace &gt; / ]"/>
<StringListProperty
Name="QMakeExtraArgs"
Category="QtSettings_03_QMake"
DisplayName="Additional Command Arguments" />
<StringListProperty
Name="QMakeCodeLines"
Category="QtSettings_03_QMake"
DisplayName="Additional Project Settings" />
<BoolProperty
Name="QtQMLDebugEnable"
Category="QtSettings_04_QML"
DisplayName="Enable QML Debugging"
Description="Select whether to launch a QML session when debugging.">
</BoolProperty>
<BoolProperty
Name="QtRunLUpdateOnBuild"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Run lupdate On Build"
Description="Select whether lupdate should be called during build."/>
<StringProperty
Name="QtLUpdateOptions"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Additional lupdate Options"
Description="Additional options passed to lupdate"/>
<StringProperty
Name="QtLReleaseOptions"
Category="QtSettings_05_LUpdateLRelease"
DisplayName="Additional lrelease Options"
Description="Additional options passed to lrelease"/>
</Rule>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,560 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Read Qt Build Variables
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(QtVsProjectSettings)' == 'true'">
<QtOuterBuildDependsOn>QtVarsPrepare;QtVars;$(QtDependsOn)</QtOuterBuildDependsOn>
<CleanDependsOn>$(CleanDependsOn);QtVarsClean</CleanDependsOn>
</PropertyGroup>
<Target Name="ResolveHost" DependsOnTargets="ResolveRemoteDir"
Condition="'$(ApplicationType)' == 'Linux' AND '$(PlatformToolset)' != 'WSL_1_0'">
<ResolveRemoteDir
Condition="'$(_ResolvedRemoteProjectDir)' == ''"
RemoteProjectDir="$(RemoteProjectDir)"
RemoteTarget="$(ResolvedRemoteTarget)"
ProjectDir="$(ProjectDir)"
IntermediateDir="$(IntDir)"
RemoteProjectDirFile="$(RemoteProjectDirFile)">
<Output TaskParameter="ResolvedRemoteProjectDir" PropertyName="_ResolvedRemoteProjectDir"/>
</ResolveRemoteDir>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVars
/////////////////////////////////////////////////////////////////////////////////////////////////
// Call qmake with generated .pro file to export Qt variables into MSBuild .props file
// -->
<Target
Name="QtVars"
Condition="'$(QtVsProjectSettings)' == 'true'"
DependsOnTargets="QtMocInit;QtUicInit;ResolveHost"
Inputs="$(MSBuildProjectFile)" Outputs="$(QtVarsFilePath)">
<!--// Check if qmake is in the tools path -->
<Error Condition="'$(QtToolsPath)' == ''" Text="There's no Qt version assigned to project $(MSBuildProjectFile) for configuration $(Configuration)/$(Platform). Please assign a Qt installation in 'Qt Project Settings'."/>
<Error
Condition="'$(ApplicationType)' != 'Linux' AND !Exists('$(QtToolsPath)\qmake.exe')"
Text="qmake not found in $(QtToolsPath) when building project $(MSBuildProjectFile)"/>
<!--// Ensure C++ compiler in PATH -->
<Exec
Condition="'$(ApplicationType)' != 'Linux'"
Command="WHERE /Q cl.exe" IgnoreExitCode="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorLevel"/>
</Exec>
<SetEnv
Condition="'$(ApplicationType)' != 'Linux' AND '$(ErrorLevel)' != '0'"
Name="PATH" Prefix="true" Value="$(ExecutablePath)"/>
<!--// Set-up temp directory -->
<RemoveDir
Directories="$(QtVarsWorkDir)"/>
<MakeDir
Directories="$(QtVarsWorkDir)"/>
<!--// Translate local paths to build host paths -->
<ItemGroup>
<LocalPath Include="WorkDir">
<Name>Path</Name>
<Item>$(QtVarsWorkDir)</Item>
<Value>$(QtVarsWorkDir)</Value>
</LocalPath>
<LocalPath Include="QMakeProps">
<Name>Path</Name>
<Item>$(QtVarsWorkDir)\props.txt</Item>
<Value>$(QtVarsWorkDir)\props.txt</Value>
</LocalPath>
<LocalPath Include="QMakeLog">
<Name>Path</Name>
<Item>$(QtVarsWorkDir)\qtvars.log</Item>
<Value>$(QtVarsWorkDir)\qtvars.log</Value>
</LocalPath>
<LocalPath Include="QMakeProj">
<Name>Path</Name>
<Item>$(QtVarsWorkDir)\qtvars.pro</Item>
<Value>$(QtVarsWorkDir)\qtvars.pro</Value>
</LocalPath>
<LocalPath Include="QtMakefile">
<Name>Path</Name>
<Item>$(QtVarsWorkDir)\Makefile</Item>
<Value>$(QtVarsWorkDir)\Makefile</Value>
</LocalPath>
</ItemGroup>
<HostTranslatePaths Items="@(LocalPath)" Names="Path">
<Output TaskParameter="Result" ItemName="HostPath"/>
</HostTranslatePaths>
<ItemGroup>
<WorkDir Include="@(HostPath->WithMetadataValue('Identity', 'WorkDir'))">
<LocalPath>%(Item)</LocalPath>
<HostPath>%(Value)</HostPath>
</WorkDir>
<QMakeProps Include="@(HostPath->WithMetadataValue('Identity', 'QMakeProps'))">
<LocalPath>%(Item)</LocalPath>
<HostPath>%(Value)</HostPath>
</QMakeProps>
<QMakeLog Include="@(HostPath->WithMetadataValue('Identity', 'QMakeLog'))">
<LocalPath>%(Item)</LocalPath>
<HostPath>%(Value)</HostPath>
</QMakeLog>
<QMakeProj Include="@(HostPath->WithMetadataValue('Identity', 'QMakeProj'))">
<LocalPath>%(Item)</LocalPath>
<HostPath>%(Value)</HostPath>
</QMakeProj>
<QtMakefile Include="@(HostPath->WithMetadataValue('Identity', 'QtMakefile'))">
<LocalPath>%(Item)</LocalPath>
<HostPath>%(Value)</HostPath>
</QtMakefile>
</ItemGroup>
<!--// Run qmake: query properties -->
<PropertyGroup>
<Cmd><![CDATA["$(QtToolsPath)/qmake" -query]]></Cmd>
</PropertyGroup>
<HostExec
Command="$(Cmd)" RedirectStdOut="props.txt"
WorkingDirectory="@(WorkDir->'%(HostPath)')"
Outputs="@(QMakeProps)"
RemoteTarget="$(ResolvedRemoteTarget)"
RemoteProjectDir="$(_ResolvedRemoteProjectDir)" />
<ReadLinesFromFile
File="@(QMakeProps->'%(LocalPath)')">
<Output TaskParameter="Lines" ItemName="QMakeQueryResult"/>
</ReadLinesFromFile>
<!--// Parse qmake query result -->
<ItemGroup>
<QMakeQueryResult>
<SepIdx>$([System.String]::Copy('%(Identity)').IndexOf(':'))</SepIdx>
</QMakeQueryResult>
<QMakeQueryResult>
<ValueIdx>$([MSBuild]::Add(%(SepIdx), 1))</ValueIdx>
</QMakeQueryResult>
<QMakeQueryResult>
<Name>$([System.String]::Copy('%(Identity)').Substring(0, %(SepIdx)).Replace('/', "SLASH"))</Name>
<Value>$([System.String]::Copy('%(Identity)').Substring(%(ValueIdx)))</Value>
</QMakeQueryResult>
<QMakeProperty
Include="@(QMakeQueryResult->'%(Name)')"
RemoveMetadata="Name;SepIdx;ValueIdx"/>
</ItemGroup>
<!--// Parse Qt version -->
<PropertyGroup Condition="'@(QMakeProperty)' != ''">
<QtVersionMajor>0</QtVersionMajor>
<QtVersionMinor>0</QtVersionMinor>
<QtVersionPatch>0</QtVersionPatch>
<QtVersionParts>0</QtVersionParts>
<QtVersion
>@(QMakeProperty->WithMetadataValue('Identity', 'QT_VERSION')->'%(Value)')</QtVersion>
<QtVersionParts
Condition="'$(QtVersion)' != ''">$(QtVersion.Split('.').Length)</QtVersionParts>
<QtVersionMajor Condition="$(QtVersionParts) >= 1">$(QtVersion.Split('.')[0])</QtVersionMajor>
<QtVersionMinor Condition="$(QtVersionParts) >= 2">$(QtVersion.Split('.')[1])</QtVersionMinor>
<QtVersionPatch Condition="$(QtVersionParts) >= 3">$(QtVersion.Split('.')[2])</QtVersionPatch>
</PropertyGroup>
<!--// Workaround for 5.13.2 NDEBUG obsession -->
<PropertyGroup
Condition="$(QtVersionMajor) > 5
OR ($(QtVersionMajor) == 5 AND ($(QtVersionMinor) > 13
OR ($(QtVersionMinor) == 13 AND ($(QtVersionPatch) >= 2))))">
<QMakeOptionEarly>true</QMakeOptionEarly>
</PropertyGroup>
<!--// qmake command line arguments -->
<ItemGroup>
<QMakeArgsList Condition="'$(QMakeOptionEarly)' == 'true'" Include="-early"/>
<QMakeArgsList Include="CONFIG -= debug release debug_and_release"/>
<QMakeArgsList Include="CONFIG += $(QtBuildConfig)"/>
<QMakeArgsList Include="$(QMakeExtraArgs)"/>
</ItemGroup>
<ItemGroup>
<QMakeArgsList>
<Escaped>%(Identity)</Escaped>
<Escaped Condition="$([System.String]::Copy('%(Identity)').Contains(' '))
OR $([System.String]::Copy('%(Identity)').Contains('&quot;'))"
>&quot;$([System.String]::Copy('%(Identity)').Replace('&quot;','\&quot;'))&quot;</Escaped>
</QMakeArgsList>
</ItemGroup>
<PropertyGroup>
<QMakeArgs>@(QMakeArgsList->'%(Escaped)', ' ')</QMakeArgs>
</PropertyGroup>
<!--// Modules and additional .pro file lines -->
<ItemGroup>
<QtModuleList Include="$(QtModules)"/>
<QMakeCodeLine Include="$(QMakeCodeLines)"/>
</ItemGroup>
<!--// Generate INCLUDEPATH value -->
<ItemGroup>
<QtIncludesList Include="$(QtHeaderSearchPath)"/>
<QtIncludes Include=
"$([System.IO.Path]::Combine($(QtInstallDir),$([System.String]::Copy('%(QtIncludesList.Identity)'))))"/>
<QtIncludesList Remove="@(QtIncludesList)"/>
</ItemGroup>
<PropertyGroup>
<QtIncludes>@(QtIncludes->'&quot;%(Identity)&quot;', ' ')</QtIncludes>
</PropertyGroup>
<!--// Generate LIBS value -->
<ItemGroup>
<QtLibsList Include="$(QtLibrarySearchPath)"/>
<QtLibs Include=
"$([System.IO.Path]::Combine($(QtInstallDir),$([System.String]::Copy('%(QtLibsList.Identity)'))))"/>
<QtLibsList Include="@(QtLibsList)"/>
</ItemGroup>
<PropertyGroup>
<QtLibs>@(QtLibs->'&quot;-L%(Identity)&quot;', ' ')</QtLibs>
</PropertyGroup>
<Message
Importance="high"
Text="Reading Qt configuration ($(QtToolsPath)/qmake)"/>
<PropertyGroup>
<!--// .pro file configuration -->
<QtVarsProFileConfig>
CONFIG += no_fixpath
</QtVarsProFileConfig>
<!--// .pro file input parameters -->
<QtVarsProFileInput>
<!--
# Selected Qt modules -->
QT += @(QtModuleList->'%(Identity)', ' ')
<!--
# Custom additional .pro file code (from property page) -->
@(QMakeCodeLine->'%(Identity)','%0D%0A')
</QtVarsProFileInput>
<!--
# Custom additional header search paths (from property page) -->
<QtVarsProFileInput Condition="'$(QtHeaderSearchPath)' != ''">
$(QtVarsProFileInput)
INCLUDEPATH += $(QtIncludes)
</QtVarsProFileInput>
<!--
# Custom additional library search paths (from property page) -->
<QtVarsProFileInput Condition="'$(QtLibrarySearchPath)' != ''">
$(QtVarsProFileInput)
LIBS += $(QtLibs)
</QtVarsProFileInput>
<!--
# Undef UNICODE macro if project is configured with multi-byte char set -->
<QtVarsProFileInput Condition="'$(CharacterSet)' == 'MultiByte'">
$(QtVarsProFileInput)
DEFINES -= UNICODE _UNICODE
</QtVarsProFileInput>
</PropertyGroup>
<!--// Write .pro file to temp path -->
<WriteLinesToFile
File="$(QtVarsWorkDir)\qtvars.pro"
Lines="$(QtVarsProFileConfig)
;$(QtVarsProFileInput)"/>
<!--// Write start of Qt vars data file:
// * Open property group tag -->
<PropertyGroup>
<!--
######## BEGIN generated XML (.props) ##############################################################
## -->
<QtVarsDataFileText>
<![CDATA[
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
]]>
</QtVarsDataFileText>
<!--
##
######## END generated XML (.props) ################################################################
-->
</PropertyGroup>
<WriteLinesToFile File="$(QtVarsWorkPath)" Lines="$(QtVarsDataFileText)" Overwrite="true"/>
<!--// Run qmake: convert Makefile vars to .props (XML) file -->
<PropertyGroup>
<Cmd><![CDATA["$(QtToolsPath)/qmake" $(QMakeArgs) qtvars.pro]]></Cmd>
</PropertyGroup>
<HostExec
Command="$(Cmd)" RedirectStdOut="qtvars.log" RedirectStdErr="STDOUT"
WorkingDirectory="@(WorkDir->'%(HostPath)')"
Inputs="@(QMakeProj)"
Outputs="@(QtMakefile);@(QMakeLog)"
RemoteTarget="$(ResolvedRemoteTarget)"
RemoteProjectDir="$(_ResolvedRemoteProjectDir)"
IgnoreExitCode="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorLevel"/>
</HostExec>
<!--// Check qmake result -->
<PropertyGroup Condition="'$(ErrorLevel)' != '0' OR !Exists('$(QtVarsWorkDir)\Makefile')">
<QMakeError>true</QMakeError>
</PropertyGroup>
<!--// Get qmake console output -->
<ItemGroup>
<QMakeError Include="($(QtToolsPath)/qmake)"/>
<QMakeError Include="%24PWD=$(QtVarsWorkDir)"/>
</ItemGroup>
<ReadLinesFromFile
File="$(QtVarsWorkDir)\qtvars.log">
<Output TaskParameter="Lines" ItemName="QMakeError"/>
</ReadLinesFromFile>
<ItemGroup>
<QMakeError
Condition="$([System.String]::Copy('%(Identity)').StartsWith('Info: creating stash file'))"
Remove="@(QMakeError)"/>
<QMakeError
Condition="!Exists('$(QtVarsWorkDir)\Makefile')"
Include="Error creating Makefile"/>
</ItemGroup>
<!--// If error, show qmake console output and stop build -->
<Error
Condition="'$(QMakeError)' == 'true'"
File="$(MSBuildProjectFile)"
Text="ERROR running qmake%0D%0Aqmake: @(QMakeError->'%(Identity)','%0D%0Aqmake: ')%0D%0A"/>
<Message
Importance="high"
Condition="'$(QMakeError)' != 'true' AND '$(QtVarsDebug)' == 'true'"
Text="qmake: @(QMakeError->'%(Identity)','%0D%0Aqmake: ')"/>
<!--// Parse variable definition expressions -->
<ParseVarDefs
Condition="'$(QtVars)' != ''" QtVars="$(QtVars)">
<Output TaskParameter="OutVarDefs" ItemName="QtVarDef"/>
</ParseVarDefs>
<!--// Read variables from Makefile -->
<GetVarsFromMakefile
Makefile="$(QtVarsWorkDir)\Makefile" VarDefs="@(QtVarDef)" ExcludeValues="$(QtVarsWorkDir)">
<Output TaskParameter="OutVars" ItemName="QtVar"/>
</GetVarsFromMakefile>
<!--// Write variables as MSBuild properties to .props file -->
<PropertyGroup>
<QtMakefileVars Condition="'@(QtVar)' != ''">
<![CDATA[@(QtVar->'<Qt_%(Identity)_>%(Value)</Qt_%(Identity)_>','%0D%0A')]]>
</QtMakefileVars>
</PropertyGroup>
<WriteLinesToFile Condition="'$(QtMakefileVars)' != ''"
File="$(QtVarsWorkPath)" Lines="$([System.String]::Copy($(QtMakefileVars)))"/>
<!--// Write qmake properties as MSBuild properties to .props file -->
<PropertyGroup>
<QMakeProps Condition="'@(QtVar)' != ''">
<![CDATA[@(QMakeProperty->'<QMake_%(Identity)_>%(Value)</QMake_%(Identity)_>','%0D%0A')]]>
</QMakeProps>
</PropertyGroup>
<WriteLinesToFile Condition="'$(QMakeProps)' != ''"
File="$(QtVarsWorkPath)" Lines="$([System.String]::Copy($(QMakeProps)))"/>
<!--// Qt settings list for backup -->
<ItemGroup>
<QtInstall Include="$(QtInstall)"/>
<QtModules Include="$(QtModules)"/>
<QtPathBinaries Include="$(QtPathBinaries)"/>
<QtPathLibraryExecutables Include="$(QtPathLibraryExecutables)"/>
<QtHeaderSearchPath Include="$(QtHeaderSearchPath)"/>
<QtLibrarySearchPath Include="$(QtLibrarySearchPath)"/>
<QtVariables Include="$(QtVars)"/>
<QMakeCodeLines Include="$(QMakeCodeLines)"/>
<QtBuildConfig Include="$(QtBuildConfig)"/>
</ItemGroup>
<!--// Write end of .props (XML) file
// * Add Qt tools output directories to include path
// * Save settings backup
// * Close property group tag
// * Create QtVar items to export Qt variables to the calling instance of MSBuild
// * Close project tag -->
<PropertyGroup>
<!--
######## BEGIN generated XML (.props) ##############################################################
## -->
<QtVarsDataFileText>
<![CDATA[
<Qt_INCLUDEPATH_
>%24(Qt_INCLUDEPATH_)%3B@(QtIncludePath->Distinct(),'%3B')</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>@(QtInstall,'%3B')</QtBkup_QtInstall>
<QtBkup_QtModules
>@(QtModules,'%3B')</QtBkup_QtModules>
<QtBkup_QtPathBinaries
>@(QtPathBinaries,'%3B')</QtBkup_QtPathBinaries>
<QtBkup_QtPathLibraryExecutables
>@(QtPathLibraryExecutables,'%3B')</QtBkup_QtPathLibraryExecutables>
<QtBkup_QtHeaderSearchPath
>@(QtHeaderSearchPath,'%3B')</QtBkup_QtHeaderSearchPath>
<QtBkup_QtLibrarySearchPath
>@(QtLibrarySearchPath,'%3B')</QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>@(QtVariables,'%3B')</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
>@(QMakeCodeLines,'%3B')</QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>@(QtBuildConfig,'%3B')</QtBkup_QtBuildConfig>
<QtVersion>$(QtVersion)</QtVersion>
<QtVersionMajor>$(QtVersionMajor)</QtVersionMajor>
<QtVersionMinor>$(QtVersionMinor)</QtVersionMinor>
<QtVersionPatch>$(QtVersionPatch)</QtVersionPatch>
</PropertyGroup>
</Project>
]]>
</QtVarsDataFileText>
<!--
##
######## END generated XML (.props) ################################################################
-->
</PropertyGroup>
<WriteLinesToFile File="$(QtVarsWorkPath)" Lines="$(QtVarsDataFileText)"/>
<!--// Create $(QtVarsOutputDir) -->
<MakeDir Directories="$(QtVarsOutputDir)"/>
<!--// Copy generated .props to $(QtVarsOutputDir) -->
<Delete
Condition="'$(ErrorLevel)' == '0'"
Files="$(QtVarsFilePath)"/>
<Copy
Condition="'$(ErrorLevel)' == '0'"
SourceFiles="$(QtVarsWorkPath)" DestinationFiles="$(QtVarsFilePath)"/>
<!--// Copy generated qtvars_plugin_import.cpp to $(QtVarsOutputDir) -->
<Delete
Condition="'$(ErrorLevel)' == '0'"
Files="$(QtVarsOutputDir)\qtvars_plugin_import.cpp"/>
<Copy
Condition="'$(ErrorLevel)' == '0' AND Exists('$(QtVarsWorkDir)\qtvars_plugin_import.cpp')"
SourceFiles="$(QtVarsWorkDir)\qtvars_plugin_import.cpp"
DestinationFiles="$(QtVarsOutputDir)\qtvars_plugin_import.cpp"/>
<!--// In design-time, copy generated .props to randomly named file -->
<PropertyGroup>
<QtVarsDesignTimeNew
Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
>$([System.IO.Path]::Combine('$(TEMP)','$([System.IO.Path]::GetRandomFileName()).designtime.props'))
</QtVarsDesignTimeNew>
</PropertyGroup>
<Copy
Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
SourceFiles="$(QtVarsFilePath)" DestinationFiles="$(QtVarsDesignTimeNew)"/>
<WriteLinesToFile
Condition="'$(ErrorLevel)' == '0' AND '$(QtVSToolsBuild)' == 'true'"
File="$(QtVarsIndexPathDesignTime)" Overwrite="true" Lines="$(QtVarsDesignTimeNew)"/>
<!--// Clean-up -->
<ItemGroup>
<QtModuleList Remove="@(QtModuleList)"/>
<QMakeCodeLine Remove="@(QMakeCodeLine)"/>
<QtIncludes Remove="@(QtIncludes)"/>
<QtLibs Remove="@(QtLibs)"/>
<QMakeError Remove="@(QMakeError)"/>
<QtInstall Remove="@(QtInstall)"/>
<QtModules Remove="@(QtModules)"/>
<QtPathBinaries Remove="@(QtPathBinaries)"/>
<QtPathLibraryExecutables Remove="@(QtPathLibraryExecutables)"/>
<QtHeaderSearchPath Remove="@(QtHeaderSearchPath)"/>
<QtLibrarySearchPath Remove="@(QtLibrarySearchPath)"/>
<QtVariables Remove="@(QtVariables)"/>
<QMakeCodeLines Remove="@(QMakeCodeLines)"/>
<QtBuildConfig Remove="@(QtBuildConfig)"/>
<QtVarDef Remove="@(QtVarDef)"/>
<QtVar Remove="@(QtVar)"/>
</ItemGroup>
<PropertyGroup>
<QtIncludes/>
<QtLibs/>
<QtVarsProFileConfig/>
<QtVarsProFileInput/>
<QtVarsDataFileText/>
<Cmd/>
<QtMakefileVars/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVarsPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Force QtVars target to run when Qt settings have changed
// -->
<Target Name="QtVarsPrepare" BeforeTargets="QtVars" Condition="Exists('$(QtVarsFilePath)')">
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtInstall)' != '$(QtInstall)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtModules)' != '$(QtModules)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtPathBinaries)' != '$(QtPathBinaries)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtPathLibraryExecutables)' != '$(QtPathLibraryExecutables)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtHeaderSearchPath)' != '$(QtHeaderSearchPath)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtLibrarySearchPath)' != '$(QtLibrarySearchPath)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtVars)' != '$(QtVars)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QMakeCodeLines)' != '$(QMakeCodeLines)'" />
<Delete Files="$(QtVarsFilePath)" Condition="Exists('$(QtVarsFilePath)')
AND '$(QtBkup_QtBuildConfig)' != '$(QtBuildConfig)'" />
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVarsClean
/////////////////////////////////////////////////////////////////////////////////////////////////
// Delete all files generated by the QtVars target
// -->
<Target Name="QtVarsClean">
<RemoveDir Directories="$(QtVarsOutputDir)"/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtVarsDesignTime
/////////////////////////////////////////////////////////////////////////////////////////////////
// Force QtVars target to run (called when project properties change)
// -->
<Target Name="QtVarsDesignTime">
<CallTarget Targets="QtVarsClean"/>
<CallTarget Targets="QtVars"/>
</Target>
</Project>

@ -0,0 +1,46 @@
<?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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qtrcc.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qtrcc.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,85 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild rcc property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeRcc)' != ''"
Project="$(QtMsBuildProps_BeforeRcc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtRcc item template
// -->
<ItemDefinitionGroup>
<QtRcc>
<ExecutionDescription>rcc %(Identity)</ExecutionDescription>
<QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
>$(QTDIR)</QTDIR>
<QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtInstallDir)</QTDIR>
<InputFile>%(FullPath)</InputFile>
<OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
>$(ProjectDir)GeneratedFiles\$(Configuration)\qrc_%(Filename).cpp</OutputFile>
<QtRccDir Condition="'$(QtVsProjectSettings)' == 'true'"
>$(IntDir)rcc\</QtRccDir>
<QtRccFileName Condition="'$(QtVsProjectSettings)' == 'true'"
>qrc_%(Filename).cpp</QtRccFileName>
<InitFuncName>%(Filename)</InitFuncName>
<Compression>default</Compression>
<TwoPass>false</TwoPass>
<DynamicSource>output</DynamicSource>
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
<Outputs>%(OutputFile)</Outputs>
</QtRcc>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterRcc)' != ''"
Project="$(QtMsBuildProps_AfterRcc)"/>
</Project>

@ -0,0 +1,595 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
/// Definitions specific to rcc
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeRcc)' != ''"
Project="$(QtMsBuildTargets_BeforeRcc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtBuildTargets>QtRcc;$(QtBuildTargets)</QtBuildTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup item type and property page
// -->
<Choose>
<When Condition="'$(QtVsProjectSettings)' == 'true' AND '$(QtVsProjectClProperties)' == 'true'">
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtrcc_v3.xml" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtrcc.xml" />
</ItemGroup>
</Otherwise>
</Choose>
<ItemGroup>
<AvailableItemName Include="QtRcc">
<Targets>Qt;_ClCompile</Targets>
</AvailableItemName>
</ItemGroup>
<PropertyGroup>
<QtRccRuleName>QtRule40_Rcc</QtRccRuleName>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccInit
/////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize default metadata
// -->
<Target Name="QtRccInit">
<!--// Initialize %(OutputFile) -->
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'true' AND '@(QtRcc)' != ''">
<QtRccAux Include="@(QtRcc)">
<OutputFile
>$([System.IO.Path]::Combine('%(QtRcc.QtRccDir)','%(QtRcc.QtRccFileName)'))</OutputFile>
</QtRccAux>
<QtRcc Remove="@(QtRcc)"/>
<QtRcc Include="@(QtRccAux)"/>
<QtRccAux Remove="@(QtRccAux)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccSetDependencies
/////////////////////////////////////////////////////////////////////////////////////////////////
// Add resource files as dependencies of the QRC file
// -->
<Target Name="QtRccSetDependencies" DependsOnTargets="QtRccInit"
Inputs="%(QtRcc.Identity)" Outputs="@(QtRcc->'####### Don't skip this target #######')">
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<!--// Parse QRC -->
<ListQrc QrcFilePath="%(QtRcc.FullPath)">
<Output TaskParameter="Result" ItemName="res_file"/>
</ListQrc>
<!--// Add dependencies -->
<ItemGroup Condition="'@(QtRcc)' != '' AND '@(res_file)' != ''">
<QtRcc>
<ResourceFiles>@(res_file)</ResourceFiles>
<AdditionalDependencies
>%(QtRcc.AdditionalDependencies);@(res_file->'%(FullPath)')</AdditionalDependencies>
</QtRcc>
</ItemGroup>
<!--// Clean-up -->
<PropertyGroup>
<QtRccExeQuoted/>
<QtRccQuoted/>
<RccListQuoted/>
</PropertyGroup>
<ItemGroup>
<res_file Remove="@(res_file)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare items for processing
// -->
<Target Name="QtRccPrepare" DependsOnTargets="QtRccSetDependencies"
Inputs="%(QtRcc.Identity)" Outputs="@(QtRcc->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRccPrepare @(QtRcc)"/>
<PropertyGroup>
<selected_files>[@(selected_files->'%(Identity)','][')]</selected_files>
<file>[@(QtRcc->'%(Identity)')]</file>
<output_file>@(QtRcc->'%(OutputFile)')</output_file>
<is_selected Condition="$(selected_files.Contains('$(file)'))">true</is_selected>
<is_selected Condition="!$(selected_files.Contains('$(file)'))">false</is_selected>
</PropertyGroup>
<!--// Delete output file to force build of source if it was manually selected to build
// (e.g. by the 'Compile' option in the context menu for the file) -->
<Delete Files="$(output_file)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'" />
<!--// If a source was manually selected to build, remove all other sources -->
<ItemGroup Condition="'@(selected_files)' != ''">
<QtRcc Remove="@(QtRcc)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' != 'true'" />
</ItemGroup>
<!--// Remove sources excluded from build -->
<ItemGroup>
<QtRcc Remove="@(QtRcc)"
Condition="'$(SelectedFiles)' == '' AND '%(QtRcc.ExcludedFromBuild)' == 'true'"/>
</ItemGroup>
<!--// Clean-up -->
<PropertyGroup>
<selected_files/>
<file/>
<output_file/>
<is_selected/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputModified flag for modified files (i.e. Inputs newer than Outputs)
// -->
<Target Name="QtRccSetModified" DependsOnTargets="QtRccPrepare"
Condition="'@(QtRcc)' != ''"
Inputs="%(QtRcc.FullPath);%(QtRcc.AdditionalDependencies)" Outputs="@(QtRcc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRccSetModified @(QtRcc)" />
<CreateProperty Value="true">
<!-- // Using ValueSetByTask ensures $(input_changed) is only set to 'true' when the target
// is actually executed and not when MSBuild is figuring out which targets to run -->
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtRcc>
<InputChanged>$(input_changed)</InputChanged>
</QtRcc>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccOverrideCpp
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<Import Project="qtrcc_cl.targets"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRcc
/////////////////////////////////////////////////////////////////////////////////////////////////
// Process each QRC file and produce the corresponding QtWork items
// -->
<PropertyGroup>
<QtRccDependsOn>
QtPrepare;
QtRccPrepare;
QtRccSetModified;
QtRccOverrideCpp;
$(QtRccDependsOn)
</QtRccDependsOn>
</PropertyGroup>
<Target Name="QtRcc"
DependsOnTargets="$(QtRccDependsOn)"
BeforeTargets="$(QtRccBeforeTargets)" AfterTargets="$(QtRccAfterTargets)"
Condition="'@(QtRcc)' != ''"
Inputs="%(QtRcc.FullPath);%(QtRcc.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtRcc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## QtRcc @(QtRcc)" />
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<PropertyGroup>
<two_pass Condition="'%(QtRcc.TwoPass)' == 'true'">true</two_pass>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert string lists in source item properties to lists of items
// -->
<Flatten Items="@(QtRcc)"
Metadata="InputFile;
OutputFile;
TempFile;
InitFuncName;
Root;
Compression;
NoCompression;
CompressThreshold;
BinaryOutput;
PassNumber;
NoNamespace;
Verbose;
List;
Project;
FormatVersion">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="InputFile;
OutputFile;
TempFile;
Root">
<Output
TaskParameter="Result" ItemName="options" />
</HostTranslatePaths>
<ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Remove quotes from all paths
// Escape trailing back-slash in paths
// Add quotes to paths containing spaces
// -->
<options>
<Value Condition="'%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'TempFile' OR '%(Name)' == 'Root'"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'TempFile' OR '%(Name)' == 'Root')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'TempFile' OR '%(Name)' == 'Root')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate tool command line arguments
// -->
<!--// inputs Input files (*.qrc) -->
<options>
<Value Condition="'%(Name)' == 'InputFile'">%(Value)</Value>
</options>
<!--// -o, -output <file> Write output to <file> -->
<options>
<Value Condition="'%(Name)' == 'OutputFile' AND '$(two_pass)' != 'true'">-o %(Value)</Value>
</options>
<options>
<Value Condition="'%(Name)' == 'OutputFile' AND '$(two_pass)' == 'true'"></Value>
</options>
<!--// -t, -temp <file> Use temporary <file> for big resources -->
<options>
<Value Condition="'%(Name)' == 'TempFile'">--temp %(Value)</Value>
</options>
<!--// -name <name> Create an external initialization function with <name> -->
<options>
<Value Condition="'%(Name)' == 'InitFuncName'">--name %(Value)</Value>
</options>
<!--// -root <path> Prefix resource access path with root path -->
<options>
<Value Condition="'%(Name)' == 'Root'">--root %(Value)</Value>
</options>
<!--// -compress <level> Compress input files by <level> -->
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level1'">--compress 1</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level2'">--compress 2</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level3'">--compress 3</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level4'">--compress 4</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level5'">--compress 5</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level6'">--compress 6</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level7'">--compress 7</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level8'">--compress 8</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression' AND '%(Value)' == 'level9'">--compress 9</Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'Compression'
AND !$([System.String]::Copy('%(Value)').StartsWith('--compress'))"></Value>
</options>
<!--// -no-compress Disable all compression -->
<options>
<Value
Condition="'%(Name)' == 'NoCompression' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value
Condition="'%(Name)' == 'NoCompression' AND '%(Value)' == 'true'">--no-compress</Value>
</options>
<!--// -threshold <level> Threshold to consider compressing files -->
<options>
<Value Condition="'%(Name)' == 'CompressThreshold'">--threshold %(Value)</Value>
</options>
<!--// -binary Output a binary file for use as a dynamic source -->
<options>
<Value Condition="'%(Name)' == 'BinaryOutput' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'BinaryOutput' AND '%(Value)' == 'true'">--binary</Value>
</options>
<!--// -pass <number> Pass number for big resources -->
<options>
<Value Condition="'%(Name)' == 'PassNumber'">--pass %(Value)</Value>
</options>
<!--// -namespace Turn off namespace macros -->
<options>
<Value Condition="'%(Name)' == 'NoNamespace' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoNamespace' AND '%(Value)' == 'true'">--namespace</Value>
</options>
<!--// -verbose Enable verbose mode -->
<options>
<Value Condition="'%(Name)' == 'Verbose' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'Verbose' AND '%(Value)' == 'true'">--verbose</Value>
</options>
<!--// -list Only list .qrc file entries, do not generate code -->
<options>
<Value Condition="'%(Name)' == 'List' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'List' AND '%(Value)' == 'true'">--list</Value>
</options>
<!--// -project Output a resource file containing all files from the
// current directory -->
<options>
<Value Condition="'%(Name)' == 'Project' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'Project' AND '%(Value)' == 'true'">--project</Value>
</options>
<!--// -format-version <number> The RCC format version to write -->
<options>
<Value Condition="'%(Name)' == 'FormatVersion'">--format-version %(Value)</Value>
</options>
</ItemGroup>
<PropertyGroup>
<options>@(options->'%(Value)', ' ')</options>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Aux properties
// -->
<PropertyGroup>
<!--// Force modified flag if source was manually selected to build -->
<input_changed Condition="'$(SelectedFiles)' == ''"
>%(QtRcc.InputChanged)</input_changed>
<input_changed Condition="'$(SelectedFiles)' != ''"
>true</input_changed>
<!--// Run work in parallel processes -->
<run_parallel Condition="'@(QtRcc)' != ''
AND '%(QtRcc.ParallelProcess)' == 'true'
AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<!--// Run work in single process -->
<run_single Condition="'@(QtRcc)' != ''
AND ('%(QtRcc.ParallelProcess)' != 'true'
OR '$(SelectedFiles)' != '')"
>true</run_single>
<!--// Get relative path to output -->
<output_relative
>$([MSBuild]::MakeRelative($(ProjectDir), %(QtRcc.OutputFile)).TrimStart('\'))</output_relative>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Create work item
// -->
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtRcc)">
<WorkType>rcc</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)/rcc</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtRcc.QTDIR)\bin\rcc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtRcc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
<InputChanged>$(input_changed)</InputChanged>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
<!--
///////////////////////////////////////////////////////////////////////////////////////////
// Two-pass ("resources_big"): pass 1 -->
<Message Condition="'%(QtRcc.TwoPass)' == 'true'">%(QtRcc.ExecutionDescription) [pass 1]</Message>
<RccPass Condition="'%(QtRcc.TwoPass)' == 'true'">1</RccPass>
<RccOptions Condition="'%(QtRcc.TwoPass)' == 'true'">$(options)</RccOptions>
<Options Condition="'%(QtRcc.TwoPass)' == 'true'"
>$(options) -pass 1 -o &quot;%(OutputFile)&quot;</Options>
<Optimization Condition="'%(QtRcc.TwoPass)' == 'true'">Disabled</Optimization>
<!--
///////////////////////////////////////////////////////////////////////////////////////////
// C++ dynamic source -->
<ClCompile Condition="'%(QtRcc.DynamicSource)' == 'output'">$(output_relative)</ClCompile>
</QtWork>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<options/>
<dependencies_changed/>
<input_changed/>
<run_parallel/>
<run_single/>
<output_relative/>
<two_pass/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<options Remove="@(options)"/>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRccPass2
/////////////////////////////////////////////////////////////////////////////////////////////////
// Two-pass ("resources_big"): pass 2
// -->
<Target Name="QtRccPass2"
DependsOnTargets="QtRccPass2_GetObjs;QtRccPass2_Exec"/>
<Target Name="QtRccPass2_GetObjs"
DependsOnTargets="ComputeCLOutputs">
<ItemGroup>
<QtRccObj Include="@(Obj->WithMetadataValue('RccPass', '1'))">
<RccPass>2</RccPass>
</QtRccObj>
</ItemGroup>
</Target>
<Target Name="QtRccPass2_Exec"
DependsOnTargets="QtRccPass2_GetObjs"
Condition="'@(QtRccObj)' != ''">
<Move
SourceFiles="%(QtRccObj.Identity)"
DestinationFiles="%(QtRccObj.Identity)_TMP"/>
<Exec
Command="@(QtRccObj->'ECHO %(ExecutionDescription) [pass 2] &amp; %(ToolPath) %(RccOptions) -pass 2 -temp &quot;%(Identity)_TMP&quot; -o &quot;%(Identity)&quot;')"
IgnoreExitCode="true"/>
<ItemGroup>
<Obj Remove="@(QtRccObj->'%(Identity)')"/>
<Obj Include="@(QtRccObj)"/>
<QtRccObj Remove="@(QtRccObj)"/>
</ItemGroup>
</Target>
<Target Name="QtRccPass2_Link"
DependsOnTargets="QtRccPass2"/>
<Target Name="QtRccPass2_Lib"
DependsOnTargets="QtRccPass2"/>
<PropertyGroup>
<ComputeLinkInputsTargets>
$(ComputeLinkInputsTargets);
;QtRccPass2_Link;
</ComputeLinkInputsTargets>
<ComputeLibInputsTargets>
$(ComputeLibInputsTargets);
;QtRccPass2_Lib;
</ComputeLibInputsTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterRcc)' != ''"
Project="$(QtMsBuildTargets_AfterRcc)"/>
</Project>

@ -0,0 +1,384 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Defines the fields included in the rcc property page, as well as any
// other metadata associated to QtRcc items
// -->
<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="QtRule40_Rcc"
PageTemplate="tool"
DisplayName="Qt Resource Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRcc" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="rcc"/>
<Category Name="QMLCache" DisplayName="Qt Quick Compiler"/>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRcc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False"/>
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Input File"
Description="Specifies the full path of the input file. (&lt;file&gt;)"
Switch="&quot;[value]&quot;" />
<StringProperty
Name="OutputFile"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Output File"
Description="Specifies the full path of the output file. (-o &lt;file&gt;)"
Switch="-o &quot;[value]&quot;" />
<StringProperty
Name="TempFile"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Temporary File"
Description="Use temporary &lt;file&gt; for big resources. (--temp &lt;file&gt;)"
Switch="--temp &quot;[value]&quot;" />
<StringProperty
Name="InitFuncName"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Initialization Function Name"
Description=
"Create an external initialization function with &lt;name&gt;. (--name &lt;name&gt;)"
Switch="--name [value]" />
<StringProperty
Name="Root"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Root"
Description="Prefix resource access path with root &lt;path&gt;. (--root &lt;path&gt;)"
Switch="--root &quot;[value]&quot;" />
<EnumProperty
Name="Compression"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Compression"
Description="Compress input files to the given compression level.">
<EnumValue
Name="default"
Switch=""
DisplayName="Default (use zlib's default compression level)"
Description=
"The default value for level is -1, which means use zlib's default compression level."/>
<EnumValue
Name="level1"
Switch="--compress 1"
DisplayName="Level 1 (least compression / fastest)"
Description="Compression level 1. (--compress 1)"/>
<EnumValue
Name="level2"
Switch="--compress 2"
DisplayName="Level 2"
Description="Compression level 2. (--compress 2)"/>
<EnumValue
Name="level3"
Switch="--compress 3"
DisplayName="Level 3"
Description="Compression level 3. (--compress 3)"/>
<EnumValue
Name="level4"
Switch="--compress 4"
DisplayName="Level 4"
Description="Compression level 4. (--compress 4)"/>
<EnumValue
Name="level5"
Switch="--compress 5"
DisplayName="Level 5"
Description="Compression level 5. (--compress 5)"/>
<EnumValue
Name="level6"
Switch="--compress 6"
DisplayName="Level 6"
Description="Compression level 6. (--compress 6)"/>
<EnumValue
Name="level7"
Switch="--compress 7"
DisplayName="Level 7"
Description="Compression level 7. (--compress 7)"/>
<EnumValue
Name="level8"
Switch="--compress 8"
DisplayName="Level 8"
Description="Compression level 8. (--compress 8)"/>
<EnumValue
Name="level9"
Switch="--compress 9"
DisplayName="Level 9 (most compression / slowest)"
Description="Compression level 9. (--compress 9)"/>
</EnumProperty>
<BoolProperty
Name="NoCompression"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="No Compression"
Description="Disable all compression. (--no-compress)"
Switch="--no-compress"/>
<StringProperty
Name="CompressThreshold"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Compression Threshold"
Description=
"Threshold &lt;level&gt; to consider compressing files. (--threshold &lt;level&gt;)"
Switch="--threshold [value]" />
<BoolProperty
Name="BinaryOutput"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Binary Output"
Description="Output a binary file for use as a dynamic resource. (--binary)"
Switch="--binary"/>
<StringProperty
Name="PassNumber"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Pass Number"
Description="Pass &lt;number&gt; for big resources. (--pass &lt;number&gt;)"
Switch="--pass [value]" />
<BoolProperty
Name="NoNamespace"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Disable Namespace Macros"
Description="Turn off namespace macros. (--namespace)"
Switch="--namespace"/>
<BoolProperty
Name="Verbose"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Verbose"
Description="Enable verbose mode. (--verbose)"
Switch="--verbose"/>
<BoolProperty
Name="List"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="List"
Description="Only list .qrc file entries, do not generate code. (--list)"
Switch="--list"/>
<BoolProperty
Name="Project"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Project"
Description=
"Output a resource file containing all files from the current directory. (--project)"
Switch="--project"/>
<StringProperty
Name="FormatVersion"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Format Version"
Description="The RCC format version to write. (--format-version &lt;number&gt;)"
Switch="--format-version [value]" />
<BoolProperty
Name="TwoPass"
DisplayName="Two-Pass Mode"
Description="1st pass: generate source file; 2nd pass: overwrite resouce data in object file"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtRccBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRccBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtRccAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRccAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic C++ Source"
Description="Add file to list of C++ sources during build.">
<EnumValue
Name="output"
DisplayName="Output File"
Description="Use output as dynamic C++ source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
<BoolProperty
Name="QmlCacheGenerate"
Category="QMLCache"
DisplayName="Enable Qt Quick Compiler"
Description="Enable or disable ahead-of-time compilation using the Qt Quick Compiler." />
<!--
// QML cache generation -->
<StringProperty Name="QMLCacheHeader_Generation" Category="QMLCache" ReadOnly="true"
DisplayName="########## QML Cache Generation ##############################"/>
<StringProperty
Name="QmlCacheGenMessage"
Category="QMLCache"
DisplayName="Execution Description of QML cache generation"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheOutputFile"
Category="QMLCache"
DisplayName="Cache File"
Description=
"Specifies the full path of the output cache files. Use %&lt;metadata&gt; to reference QML file
metadata (e.g. %&lt;Filename&gt;)." />
<!--
// QRC filtering -->
<StringProperty Name="QMLCacheHeader_Filtering" Category="QMLCache" ReadOnly="true"
DisplayName="########## QRC Filtering ##############################"/>
<StringProperty
Name="QmlCacheFilterMessage"
Category="QMLCache"
DisplayName="Execution Description of QRC filtering"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheFilteredFile"
Category="QMLCache"
DisplayName="Filtered Resource File"
Description=
"Specifies the full path of the resource file copy with QML files filtered out." />
<StringProperty
Name="QmlCacheFilteredOutputFile"
Category="QMLCache"
DisplayName="Filtered Resource File Output"
Description=
"Specifies the full path of the output file for the processing of the filtered resource file." />
<StringProperty
Name="QmlCacheFilteredInitFuncName"
Category="QMLCache"
DisplayName="Filtered Resource File Initialization Function"
Description=
"Create an external initialization function with &lt;name&gt;. (--name &lt;name&gt;)" />
<!--
// QML cache loader generation -->
<StringProperty Name="QMLCacheHeader_Loader" Category="QMLCache" ReadOnly="true"
DisplayName="########## QML Cache Loader ##############################"/>
<StringProperty
Name="QmlCacheLoaderMessage"
Category="QMLCache"
DisplayName="Execution Description of QML cache loader generation"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheLoaderFile"
Category="QMLCache"
DisplayName="Cache Loader Source File"
Description="Specifies the full path of the QML cache loader source file." />
</Rule>
<ItemType
Name="QtRcc"
DisplayName="Qt Resource Compiler (rcc)" />
<FileExtension
Name="*.qrc"
ContentType="QtRcc" />
<ContentType
Name="QtRcc"
DisplayName="Qt Resource Compiler (rcc)"
ItemType="QtRcc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,159 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="QtRccOverrideCpp" DependsOnTargets="QtRccPrepare;QtGetDefaultClCompile"
Inputs="%(QtRcc.Identity)" Outputs="@(QtRcc->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRccOverrideCpp @(QtRcc)" />
<PropertyGroup Condition="'$(QtVsProjectClProperties)' == 'true'">
<override_cl_compile>%(QtRcc.OverrideClCompile)</override_cl_compile>
</PropertyGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'extend'">
<QtRcc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)');%(QtRcc.AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)');%(QtRcc.AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)');%(QtRcc.PreprocessorDefinitions)</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)');%(QtRcc.UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<DisableSpecificWarnings>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)');%(QtRcc.DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)');%(QtRcc.ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedUsingFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)');%(QtRcc.ForcedUsingFiles)</ForcedUsingFiles>
<TreatSpecificWarningsAsErrors>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)');%(QtRcc.TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
<AdditionalCppOptions
Condition="'%(QtRcc.AdditionalCppOptions)' != ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalOptions)') %(QtRcc.AdditionalCppOptions)</AdditionalCppOptions>
<AdditionalCppOptions
Condition="'%(QtRcc.AdditionalCppOptions)' == ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalOptions)')</AdditionalCppOptions>
</QtRcc>
</ItemGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'false'">
<QtRcc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories Condition="'%(QtRcc.AdditionalIncludeDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)')</AdditionalIncludeDirectories>
<AdditionalUsingDirectories Condition="'%(QtRcc.AdditionalUsingDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)')</AdditionalUsingDirectories>
<DebugInformationFormat Condition="'%(QtRcc.DebugInformationFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DebugInformationFormat)')</DebugInformationFormat>
<SupportJustMyCode Condition="'%(QtRcc.SupportJustMyCode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SupportJustMyCode)')</SupportJustMyCode>
<CompileAsManaged Condition="'%(QtRcc.CompileAsManaged)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsManaged)')</CompileAsManaged>
<CompileAsWinRT Condition="'%(QtRcc.CompileAsWinRT)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsWinRT)')</CompileAsWinRT>
<SuppressStartupBanner Condition="'%(QtRcc.SuppressStartupBanner)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SuppressStartupBanner)')</SuppressStartupBanner>
<WarningLevel Condition="'%(QtRcc.WarningLevel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningLevel)')</WarningLevel>
<TreatWarningAsError Condition="'%(QtRcc.TreatWarningAsError)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWarningAsError)')</TreatWarningAsError>
<WarningVersion Condition="'%(QtRcc.WarningVersion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningVersion)')</WarningVersion>
<DiagnosticsFormat Condition="'%(QtRcc.DiagnosticsFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DiagnosticsFormat)')</DiagnosticsFormat>
<SDLCheck Condition="'%(QtRcc.SDLCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SDLCheck)')</SDLCheck>
<MultiProcessorCompilation Condition="'%(QtRcc.MultiProcessorCompilation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MultiProcessorCompilation)')</MultiProcessorCompilation>
<Optimization Condition="'%(QtRcc.Optimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(Optimization)')</Optimization>
<InlineFunctionExpansion Condition="'%(QtRcc.InlineFunctionExpansion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(InlineFunctionExpansion)')</InlineFunctionExpansion>
<IntrinsicFunctions Condition="'%(QtRcc.IntrinsicFunctions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IntrinsicFunctions)')</IntrinsicFunctions>
<FavorSizeOrSpeed Condition="'%(QtRcc.FavorSizeOrSpeed)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FavorSizeOrSpeed)')</FavorSizeOrSpeed>
<OmitFramePointers Condition="'%(QtRcc.OmitFramePointers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitFramePointers)')</OmitFramePointers>
<EnableFiberSafeOptimizations Condition="'%(QtRcc.EnableFiberSafeOptimizations)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableFiberSafeOptimizations)')</EnableFiberSafeOptimizations>
<WholeProgramOptimization Condition="'%(QtRcc.WholeProgramOptimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WholeProgramOptimization)')</WholeProgramOptimization>
<PreprocessorDefinitions Condition="'%(QtRcc.PreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)')</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions Condition="'%(QtRcc.UndefinePreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)')</UndefinePreprocessorDefinitions>
<UndefineAllPreprocessorDefinitions Condition="'%(QtRcc.UndefineAllPreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefineAllPreprocessorDefinitions)')</UndefineAllPreprocessorDefinitions>
<IgnoreStandardIncludePath Condition="'%(QtRcc.IgnoreStandardIncludePath)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IgnoreStandardIncludePath)')</IgnoreStandardIncludePath>
<PreprocessToFile Condition="'%(QtRcc.PreprocessToFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessToFile)')</PreprocessToFile>
<PreprocessSuppressLineNumbers Condition="'%(QtRcc.PreprocessSuppressLineNumbers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessSuppressLineNumbers)')</PreprocessSuppressLineNumbers>
<PreprocessKeepComments Condition="'%(QtRcc.PreprocessKeepComments)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessKeepComments)')</PreprocessKeepComments>
<StringPooling Condition="'%(QtRcc.StringPooling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StringPooling)')</StringPooling>
<MinimalRebuild Condition="'%(QtRcc.MinimalRebuild)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MinimalRebuild)')</MinimalRebuild>
<ExceptionHandling Condition="'%(QtRcc.ExceptionHandling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExceptionHandling)')</ExceptionHandling>
<SmallerTypeCheck Condition="'%(QtRcc.SmallerTypeCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SmallerTypeCheck)')</SmallerTypeCheck>
<BasicRuntimeChecks Condition="'%(QtRcc.BasicRuntimeChecks)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BasicRuntimeChecks)')</BasicRuntimeChecks>
<RuntimeLibrary Condition="'%(QtRcc.RuntimeLibrary)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeLibrary)')</RuntimeLibrary>
<StructMemberAlignment Condition="'%(QtRcc.StructMemberAlignment)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StructMemberAlignment)')</StructMemberAlignment>
<BufferSecurityCheck Condition="'%(QtRcc.BufferSecurityCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BufferSecurityCheck)')</BufferSecurityCheck>
<ControlFlowGuard Condition="'%(QtRcc.ControlFlowGuard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ControlFlowGuard)')</ControlFlowGuard>
<FunctionLevelLinking Condition="'%(QtRcc.FunctionLevelLinking)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FunctionLevelLinking)')</FunctionLevelLinking>
<EnableParallelCodeGeneration Condition="'%(QtRcc.EnableParallelCodeGeneration)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableParallelCodeGeneration)')</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet Condition="'%(QtRcc.EnableEnhancedInstructionSet)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableEnhancedInstructionSet)')</EnableEnhancedInstructionSet>
<FloatingPointModel Condition="'%(QtRcc.FloatingPointModel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointModel)')</FloatingPointModel>
<FloatingPointExceptions Condition="'%(QtRcc.FloatingPointExceptions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointExceptions)')</FloatingPointExceptions>
<CreateHotpatchableImage Condition="'%(QtRcc.CreateHotpatchableImage)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CreateHotpatchableImage)')</CreateHotpatchableImage>
<DisableLanguageExtensions Condition="'%(QtRcc.DisableLanguageExtensions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableLanguageExtensions)')</DisableLanguageExtensions>
<ConformanceMode Condition="'%(QtRcc.ConformanceMode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ConformanceMode)')</ConformanceMode>
<TreatWChar_tAsBuiltInType Condition="'%(QtRcc.TreatWChar_tAsBuiltInType)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWChar_tAsBuiltInType)')</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope Condition="'%(QtRcc.ForceConformanceInForLoopScope)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForceConformanceInForLoopScope)')</ForceConformanceInForLoopScope>
<RemoveUnreferencedCodeData Condition="'%(QtRcc.RemoveUnreferencedCodeData)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RemoveUnreferencedCodeData)')</RemoveUnreferencedCodeData>
<EnforceTypeConversionRules Condition="'%(QtRcc.EnforceTypeConversionRules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnforceTypeConversionRules)')</EnforceTypeConversionRules>
<RuntimeTypeInfo Condition="'%(QtRcc.RuntimeTypeInfo)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeTypeInfo)')</RuntimeTypeInfo>
<OpenMPSupport Condition="'%(QtRcc.OpenMPSupport)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OpenMPSupport)')</OpenMPSupport>
<LanguageStandard Condition="'%(QtRcc.LanguageStandard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(LanguageStandard)')</LanguageStandard>
<EnableModules Condition="'%(QtRcc.EnableModules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableModules)')</EnableModules>
<PrecompiledHeader Condition="'%(QtRcc.PrecompiledHeader)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeader)')</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'%(QtRcc.PrecompiledHeaderFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderFile)')</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'%(QtRcc.PrecompiledHeaderOutputFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderOutputFile)')</PrecompiledHeaderOutputFile>
<ExpandAttributedSource Condition="'%(QtRcc.ExpandAttributedSource)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExpandAttributedSource)')</ExpandAttributedSource>
<AssemblerOutput Condition="'%(QtRcc.AssemblerOutput)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerOutput)')</AssemblerOutput>
<UseUnicodeForAssemblerListing Condition="'%(QtRcc.UseUnicodeForAssemblerListing)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseUnicodeForAssemblerListing)')</UseUnicodeForAssemblerListing>
<AssemblerListingLocation Condition="'%(QtRcc.AssemblerListingLocation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerListingLocation)')</AssemblerListingLocation>
<ObjectFileName Condition="'%(QtRcc.ObjectFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ObjectFileName)')</ObjectFileName>
<ProgramDataBaseFileName Condition="'%(QtRcc.ProgramDataBaseFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ProgramDataBaseFileName)')</ProgramDataBaseFileName>
<GenerateXMLDocumentationFiles Condition="'%(QtRcc.GenerateXMLDocumentationFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(GenerateXMLDocumentationFiles)')</GenerateXMLDocumentationFiles>
<XMLDocumentationFileName Condition="'%(QtRcc.XMLDocumentationFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(XMLDocumentationFileName)')</XMLDocumentationFileName>
<BrowseInformation Condition="'%(QtRcc.BrowseInformation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformation)')</BrowseInformation>
<BrowseInformationFile Condition="'%(QtRcc.BrowseInformationFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformationFile)')</BrowseInformationFile>
<CallingConvention Condition="'%(QtRcc.CallingConvention)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CallingConvention)')</CallingConvention>
<CompileAs Condition="'%(QtRcc.CompileAs)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAs)')</CompileAs>
<DisableSpecificWarnings Condition="'%(QtRcc.DisableSpecificWarnings)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)')</DisableSpecificWarnings>
<ForcedIncludeFiles Condition="'%(QtRcc.ForcedIncludeFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)')</ForcedIncludeFiles>
<ForcedUsingFiles Condition="'%(QtRcc.ForcedUsingFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)')</ForcedUsingFiles>
<ShowIncludes Condition="'%(QtRcc.ShowIncludes)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ShowIncludes)')</ShowIncludes>
<UseFullPaths Condition="'%(QtRcc.UseFullPaths)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseFullPaths)')</UseFullPaths>
<OmitDefaultLibName Condition="'%(QtRcc.OmitDefaultLibName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitDefaultLibName)')</OmitDefaultLibName>
<ErrorReporting Condition="'%(QtRcc.ErrorReporting)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ErrorReporting)')</ErrorReporting>
<TreatSpecificWarningsAsErrors Condition="'%(QtRcc.TreatSpecificWarningsAsErrors)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)')</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
</QtRcc>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<override_cl_compile/>
</PropertyGroup>
</Target>
</Project>

@ -0,0 +1,737 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<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="QtRule40_Rcc"
PageTemplate="tool"
DisplayName="Qt Resource Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRcc" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="rcc"/>
<Category Name="QMLCache" DisplayName="Qt Quick Compiler"/>
<Category Name="RccCpp" DisplayName="Override C/C++"/>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRcc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False"/>
<StringProperty
Name="QtRccDir"
DisplayName="Output Directory"
Description="Specifies the path of the generated rcc output directory."/>
<StringProperty
Name="QtRccFileName"
DisplayName="Output File Name"
Description="Specifies the name of the generated rcc output file."/>
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Visible="false"/>
<StringProperty
Name="InputFile"
DisplayName="Input File"
Visible="false"/>
<StringProperty
Name="OutputFile"
DisplayName="Output File"
Visible="false"/>
<StringProperty
Name="TempFile"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Temporary File"
Description="Use temporary &lt;file&gt; for big resources. (--temp &lt;file&gt;)"
Switch="--temp &quot;[value]&quot;" />
<StringProperty
Name="InitFuncName"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Initialization Function Name"
Description=
"Create an external initialization function with &lt;name&gt;. (--name &lt;name&gt;)"
Switch="--name [value]" />
<StringProperty
Name="Root"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Root"
Description="Prefix resource access path with root &lt;path&gt;. (--root &lt;path&gt;)"
Switch="--root &quot;[value]&quot;" />
<EnumProperty
Name="Compression"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Compression"
Description="Compress input files to the given compression level.">
<EnumValue
Name="default"
Switch=""
DisplayName="Default (use zlib's default compression level)"
Description=
"The default value for level is -1, which means use zlib's default compression level."/>
<EnumValue
Name="level1"
Switch="--compress 1"
DisplayName="Level 1 (least compression / fastest)"
Description="Compression level 1. (--compress 1)"/>
<EnumValue
Name="level2"
Switch="--compress 2"
DisplayName="Level 2"
Description="Compression level 2. (--compress 2)"/>
<EnumValue
Name="level3"
Switch="--compress 3"
DisplayName="Level 3"
Description="Compression level 3. (--compress 3)"/>
<EnumValue
Name="level4"
Switch="--compress 4"
DisplayName="Level 4"
Description="Compression level 4. (--compress 4)"/>
<EnumValue
Name="level5"
Switch="--compress 5"
DisplayName="Level 5"
Description="Compression level 5. (--compress 5)"/>
<EnumValue
Name="level6"
Switch="--compress 6"
DisplayName="Level 6"
Description="Compression level 6. (--compress 6)"/>
<EnumValue
Name="level7"
Switch="--compress 7"
DisplayName="Level 7"
Description="Compression level 7. (--compress 7)"/>
<EnumValue
Name="level8"
Switch="--compress 8"
DisplayName="Level 8"
Description="Compression level 8. (--compress 8)"/>
<EnumValue
Name="level9"
Switch="--compress 9"
DisplayName="Level 9 (most compression / slowest)"
Description="Compression level 9. (--compress 9)"/>
</EnumProperty>
<BoolProperty
Name="NoCompression"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="No Compression"
Description="Disable all compression. (--no-compress)"
Switch="--no-compress"/>
<StringProperty
Name="CompressThreshold"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Compression Threshold"
Description=
"Threshold &lt;level&gt; to consider compressing files. (--threshold &lt;level&gt;)"
Switch="--threshold [value]" />
<BoolProperty
Name="BinaryOutput"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Binary Output"
Description="Output a binary file for use as a dynamic resource. (--binary)"
Switch="--binary"/>
<StringProperty
Name="PassNumber"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Pass Number"
Description="Pass &lt;number&gt; for big resources. (--pass &lt;number&gt;)"
Switch="--pass [value]" />
<BoolProperty
Name="NoNamespace"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Disable Namespace Macros"
Description="Turn off namespace macros. (--namespace)"
Switch="--namespace"/>
<BoolProperty
Name="Verbose"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Verbose"
Description="Enable verbose mode. (--verbose)"
Switch="--verbose"/>
<BoolProperty
Name="List"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="List"
Description="Only list .qrc file entries, do not generate code. (--list)"
Switch="--list"/>
<BoolProperty
Name="Project"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Project"
Description=
"Output a resource file containing all files from the current directory. (--project)"
Switch="--project"/>
<StringProperty
Name="FormatVersion"
HelpUrl="http://doc.qt.io/qt-5/rcc.html"
DisplayName="Format Version"
Description="The RCC format version to write. (--format-version &lt;number&gt;)"
Switch="--format-version [value]" />
<BoolProperty
Name="TwoPass"
DisplayName="Two-Pass Mode"
Description="1st pass: generate source file; 2nd pass: overwrite resouce data in object file"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtRccBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRccBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtRccAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRccAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic C++ Source"
Description="Add file to list of C++ sources during build.">
<EnumValue
Name="output"
DisplayName="Output File"
Description="Use output as dynamic C++ source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
<BoolProperty
Name="QmlCacheGenerate"
Category="QMLCache"
DisplayName="Enable Qt Quick Compiler"
Description="Enable or disable ahead-of-time compilation using the Qt Quick Compiler." />
<!--
// QML cache generation -->
<StringProperty Name="QMLCacheHeader_Generation" Category="QMLCache" ReadOnly="true"
DisplayName="########## QML Cache Generation ##############################"/>
<StringProperty
Name="QmlCacheGenMessage"
Category="QMLCache"
DisplayName="Execution Description of QML cache generation"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheOutputFile"
Category="QMLCache"
DisplayName="Cache File"
Description=
"Specifies the full path of the output cache files. Use %&lt;metadata&gt; to reference QML file
metadata (e.g. %&lt;Filename&gt;)." />
<!--
// QRC filtering -->
<StringProperty Name="QMLCacheHeader_Filtering" Category="QMLCache" ReadOnly="true"
DisplayName="########## QRC Filtering ##############################"/>
<StringProperty
Name="QmlCacheFilterMessage"
Category="QMLCache"
DisplayName="Execution Description of QRC filtering"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheFilteredFile"
Category="QMLCache"
DisplayName="Filtered Resource File"
Description=
"Specifies the full path of the resource file copy with QML files filtered out." />
<StringProperty
Name="QmlCacheFilteredOutputFile"
Category="QMLCache"
DisplayName="Filtered Resource File Output"
Description=
"Specifies the full path of the output file for the processing of the filtered resource file." />
<StringProperty
Name="QmlCacheFilteredInitFuncName"
Category="QMLCache"
DisplayName="Filtered Resource File Initialization Function"
Description=
"Create an external initialization function with &lt;name&gt;. (--name &lt;name&gt;)" />
<!--
// QML cache loader generation -->
<StringProperty Name="QMLCacheHeader_Loader" Category="QMLCache" ReadOnly="true"
DisplayName="########## QML Cache Loader ##############################"/>
<StringProperty
Name="QmlCacheLoaderMessage"
Category="QMLCache"
DisplayName="Execution Description of QML cache loader generation"
IncludeInCommandLine="False"/>
<StringProperty
Name="QmlCacheLoaderFile"
Category="QMLCache"
DisplayName="Cache Loader Source File"
Description="Specifies the full path of the QML cache loader source file." />
<EnumProperty
Name="OverrideClCompile"
Category="RccCpp"
DisplayName="Override C/C++ Properties"
Description="Define how C/C++ properties are redefined for rcc">
<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>
<!-- BEGIN Generated Text -->
<StringProperty Name="QtCppHeader_General" Category="RccCpp" ReadOnly="true" DisplayName="########## General ##############################" />
<StringListProperty Subtype="folder" Name="AdditionalIncludeDirectories" DisplayName="Additional Include Directories" Description="(overrides C/C++ property) Specifies one or more directories to add to the include path; separate with semi-colons if more than one. (/I[path])" Category="RccCpp" Switch="I" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalIncludeDirectories">
</StringListProperty>
<StringListProperty Subtype="folder" Name="AdditionalUsingDirectories" DisplayName="Additional #using Directories" Description="(overrides C/C++ property) Specifies one or more directories (separate directory names with a semicolon) to be searched to resolve names passed to a #using directive. (/AI[path])" Category="RccCpp" Switch="AI" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalUsingDirectories">
</StringListProperty>
<EnumProperty Name="DebugInformationFormat" DisplayName="Debug Information Format" Description="(overrides C/C++ property) Specifies the type of debugging information generated by the compiler. This requires compatible linker settings. (/Z7, /Zi, /ZI)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.DebugInformationFormat">
<EnumValue Name="None" Switch="" DisplayName="None" Description="Produces no debugging information, so compilation may be faster.">
</EnumValue>
<EnumValue Name="OldStyle" Switch="Z7" DisplayName="C7 compatible" Description="Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB).">
</EnumValue>
<EnumValue Name="ProgramDatabase" Switch="Zi" DisplayName="Program Database" Description="Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables, as well as functions and line numbers. ">
</EnumValue>
<EnumValue Name="EditAndContinue" Switch="ZI" DisplayName="Program Database for Edit And Continue" Description="Produces a program database, as described above, in a format that supports the Edit and Continue feature.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SupportJustMyCode" DisplayName="Support Just My Code Debugging" Description="(overrides C/C++ property) Adds supporting code for enabling Just My Code debugging in this compilation unit. (/JMC)" Category="RccCpp" Switch="JMC" F1Keyword="VC.Project.VCCLCompilerTool.SupportJustMyCode">
</BoolProperty>
<EnumProperty Name="CompileAsManaged" DisplayName="Common Language RunTime Support" Description="(overrides C/C++ property) Use the .NET runtime service. This switch is incompatible with some other switches; see the documentation on the /clr family of switches for details." Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsManaged">
<EnumValue Name="false" Switch="" DisplayName="No Common Language RunTime Support" Description="No Common Language RunTime Support">
</EnumValue>
<EnumValue Name="true" Switch="clr" DisplayName="Common Language RunTime Support" Description="Creates metadata for your application that can be consumed by other CLR applications, and allows your application to consume types and data in the metadata of other CLR components.">
</EnumValue>
<EnumValue Name="Pure" Switch="clr:pure" DisplayName="Pure MSIL Common Language RunTime Support" Description="Produces an MSIL-only output file with no native executable code, although it can contain native types compiled to MSIL.">
</EnumValue>
<EnumValue Name="Safe" Switch="clr:safe" DisplayName="Safe MSIL Common Language RunTime Support" Description="Produces an MSIL-only (no native executable code) and verifiable output file.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="CompileAsWinRT" DisplayName="Consume Windows Runtime Extension" Description="(overrides C/C++ property) Consume the Windows Run Time languages extensions. (/ZW)" Category="RccCpp" Switch="ZW" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsWinRT">
</BoolProperty>
<BoolProperty Name="SuppressStartupBanner" DisplayName="Suppress Startup Banner" Description="(overrides C/C++ property) Suppresses the display of the sign-on banner when the compiler starts up and display of informational messages during compiling." Category="RccCpp" Switch="nologo" F1Keyword="VC.Project.VCCLCompilerTool.SuppressStartupBanner">
</BoolProperty>
<EnumProperty Name="WarningLevel" DisplayName="Warning Level" Description="(overrides C/C++ property) Select how strict you want the compiler to be about code errors. (/W0 - /W4)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.WarningLevel">
<EnumValue Name="TurnOffAllWarnings" Switch="W0" DisplayName="Turn Off All Warnings" Description="Level 0 disables all warnings.">
</EnumValue>
<EnumValue Name="Level1" Switch="W1" DisplayName="Level1" Description="Level 1 displays severe warnings. Level 1 is the default warning level at the command line.">
</EnumValue>
<EnumValue Name="Level2" Switch="W2" DisplayName="Level2" Description="Level 2 displays all level 1 warnings and warnings less severe than level 1.">
</EnumValue>
<EnumValue Name="Level3" Switch="W3" DisplayName="Level3" Description="Level 3 displays all level 2 warnings and all other warnings recommended for production purposes.">
</EnumValue>
<EnumValue Name="Level4" Switch="W4" DisplayName="Level4" Description="Level 4 displays all level 3 warnings plus informational warnings, which in most cases can be safely ignored.">
</EnumValue>
<EnumValue Name="EnableAllWarnings" Switch="Wall" DisplayName="EnableAllWarnings" Description="Enables all warnings, including those disabled by default.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="WX-" Name="TreatWarningAsError" DisplayName="Treat Warnings As Errors" Description="(overrides C/C++ property) Treats all compiler warnings as errors. For a new project, it may be best to use /WX in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects." Category="RccCpp" Switch="WX" F1Keyword="VC.Project.VCCLCompilerTool.WarnAsError">
</BoolProperty>
<StringProperty Name="WarningVersion" DisplayName="Warning Version" Description="(overrides C/C++ property) Hide warnings introduced after a specific version of the compiler. (/Wv:xx[.yy[.zzzzz]])" Category="RccCpp" Switch="Wv:" F1Keyword="VC.Project.VCCLCompilerTool.WarningVersion">
</StringProperty>
<EnumProperty Name="DiagnosticsFormat" DisplayName="Diagnostics Format" Description="(overrides C/C++ property) Enables rich diagnostics, with column information and source context in diagnostic messages." Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.DiagnosticsFormat">
<EnumValue Name="Caret" Switch="diagnostics:caret" DisplayName="Caret" Description="Provides column information in the diagnostic message, as well as outputting the relevant line of source code with a caret indicating the offending column.">
</EnumValue>
<EnumValue Name="Column" Switch="diagnostics:column" DisplayName="Column Info" Description="Additionally provides the column number within the line where the diagnostic is issued, where applicable.">
</EnumValue>
<EnumValue Name="Classic" Switch="diagnostics:classic" DisplayName="Classic" Description="Retains the prior, concise diagnostic messages with the line number.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="sdl-" Name="SDLCheck" DisplayName="SDL checks" Description="(overrides C/C++ property) Additional Security Development Lifecycle (SDL) recommended checks; includes enabling additional secure code generation features and enables extra security-relevant warnings as errors. (/sdl, /sdl-)" Category="RccCpp" Switch="sdl" F1Keyword="VC.Project.VCCLCompilerTool.SDLCheck">
</BoolProperty>
<BoolProperty Name="MultiProcessorCompilation" DisplayName="Multi-processor Compilation" Description="(overrides C/C++ property) Multi-processor Compilation." Category="RccCpp" Switch="MP" F1Keyword="VC.Project.VCCLCompilerTool.MultiProcessorCompilation">
<Argument Property="ProcessorNumber" IsRequired="false" />
</BoolProperty>
<StringProperty Name="QtCppHeader_Optimization" Category="RccCpp" ReadOnly="true" DisplayName="########## Optimization ##############################" />
<EnumProperty Name="Optimization" DisplayName="Optimization" Description="(overrides C/C++ property) Select option for code optimization; choose Custom to use specific optimization options. (/Od, /O1, /O2)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.Optimization">
<EnumValue Name="Custom" Switch="" DisplayName="Custom" Description="Custom optimization.">
</EnumValue>
<EnumValue Name="Disabled" Switch="Od" DisplayName="Disabled" Description="Disable optimization.">
</EnumValue>
<EnumValue Name="MinSpace" Switch="O1" DisplayName="Maximum Optimization (Favor Size)" Description="Equivalent to /Og /Os /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="MaxSpeed" Switch="O2" DisplayName="Maximum Optimization (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="Full" Switch="Ox" DisplayName="Optimizations (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2">
</EnumValue>
</EnumProperty>
<EnumProperty Name="InlineFunctionExpansion" DisplayName="Inline Function Expansion" Description="(overrides C/C++ property) Select the level of inline function expansion for the build. (/Ob1, /Ob2)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.InlineFunctionExpansion">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="Disabled" Switch="Ob0" DisplayName="Disabled" Description="Disables inline expansion, which is on by default.">
</EnumValue>
<EnumValue Name="OnlyExplicitInline" Switch="Ob1" DisplayName="Only __inline" Description="Expands only functions marked as inline, __inline, __forceinline or __inline or, in a C++ member function, defined within a class declaration.">
</EnumValue>
<EnumValue Name="AnySuitable" Switch="Ob2" DisplayName="Any Suitable" Description="Expands functions marked as inline or __inline and any other function that the compiler chooses (expansion occurs at the compiler's discretion, often referred to as auto-inlining).">
</EnumValue>
</EnumProperty>
<BoolProperty Name="IntrinsicFunctions" DisplayName="Enable Intrinsic Functions" Description="(overrides C/C++ property) Enables intrinsic functions. Using intrinsic functions generates faster, but possibly larger, code. (/Oi)" Category="RccCpp" Switch="Oi" F1Keyword="VC.Project.VCCLCompilerTool.EnableIntrinsicFunctions">
</BoolProperty>
<EnumProperty Name="FavorSizeOrSpeed" DisplayName="Favor Size Or Speed" Description="(overrides C/C++ property) Whether to favor code size or code speed; 'Global Optimization' must be turned on. (/Ot, /Os)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.FavorSizeOrSpeed">
<EnumValue Name="Size" Switch="Os" DisplayName="Favor small code" Description="Favor Small Code. Minimizes the size of EXEs and DLLs by instructing the compiler to favor size over speed.">
</EnumValue>
<EnumValue Name="Speed" Switch="Ot" DisplayName="Favor fast code" Description="Favor Fast Code. Maximizes the speed of EXEs and DLLs by instructing the compiler to favor speed over size. (This is the default.) ">
</EnumValue>
<EnumValue Name="Neither" Switch="" DisplayName="Neither" Description="No size nor speed optimization.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Oy-" Name="OmitFramePointers" DisplayName="Omit Frame Pointers" Description="(overrides C/C++ property) Suppresses creation of frame pointers on the call stack." Category="RccCpp" Switch="Oy" F1Keyword="VC.Project.VCCLCompilerTool.OmitFramePointers">
</BoolProperty>
<BoolProperty Name="EnableFiberSafeOptimizations" DisplayName="Enable Fiber-Safe Optimizations" Description="(overrides C/C++ property) Enables memory space optimization when using fibers and thread local storage access. (/GT)" Category="RccCpp" Switch="GT" F1Keyword="VC.Project.VCCLCompilerTool.EnableFiberSafeOptimizations">
</BoolProperty>
<BoolProperty Name="WholeProgramOptimization" DisplayName="Whole Program Optimization" Description="(overrides C/C++ property) Enables cross-module optimizations by delaying code generation to link time; requires that linker option 'Link Time Code Generation' be turned on. (/GL)" Category="RccCpp" Switch="GL" F1Keyword="VC.Project.VCCLWCECompilerTool.WholeProgramOptimization">
</BoolProperty>
<StringProperty Name="QtCppHeader_Preprocessor" Category="RccCpp" ReadOnly="true" DisplayName="########## Preprocessor ##############################" />
<StringListProperty Name="PreprocessorDefinitions" DisplayName="Preprocessor Definitions" Description="(overrides C/C++ property) Defines a preprocessing symbols for your source file." Category="RccCpp" Switch="D " F1Keyword="VC.Project.VCCLCompilerTool.PreprocessorDefinitions">
</StringListProperty>
<StringListProperty Name="UndefinePreprocessorDefinitions" DisplayName="Undefine Preprocessor Definitions" Description="(overrides C/C++ property) Specifies one or more preprocessor undefines. (/U[macro])" Category="RccCpp" Switch="U" F1Keyword="VC.Project.VCCLCompilerTool.UndefinePreprocessorDefinitions">
</StringListProperty>
<BoolProperty Name="UndefineAllPreprocessorDefinitions" DisplayName="Undefine All Preprocessor Definitions" Description="(overrides C/C++ property) Undefine all previously defined preprocessor values. (/u)" Category="RccCpp" Switch="u" F1Keyword="VC.Project.VCCLCompilerTool.UndefineAllPreprocessorDefinitions">
</BoolProperty>
<BoolProperty Name="IgnoreStandardIncludePath" DisplayName="Ignore Standard Include Paths" Description="(overrides C/C++ property) Prevents the compiler from searching for include files in directories specified in the INCLUDE environment variables." Category="RccCpp" Switch="X" F1Keyword="VC.Project.VCCLCompilerTool.IgnoreStandardIncludePath">
</BoolProperty>
<BoolProperty Name="PreprocessToFile" DisplayName="Preprocess to a File" Description="(overrides C/C++ property) Preprocesses C and C++ source files and writes the preprocessed output to a file. This option suppresses compilation, thus it does not produce an .obj file." Category="RccCpp" Switch="P" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFile">
</BoolProperty>
<BoolProperty Name="PreprocessSuppressLineNumbers" DisplayName="Preprocess Suppress Line Numbers" Description="(overrides C/C++ property) Preprocess without #line directives." Category="RccCpp" Switch="EP" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFileNoLines">
</BoolProperty>
<BoolProperty Name="PreprocessKeepComments" DisplayName="Keep Comments" Description="(overrides C/C++ property) Suppresses comment strip from source code; requires that one of the 'Preprocessing' options be set. (/C)" Category="RccCpp" Switch="C" F1Keyword="VC.Project.VCCLCompilerTool.KeepComments">
</BoolProperty>
<StringProperty Name="QtCppHeader_Code_Generation" Category="RccCpp" ReadOnly="true" DisplayName="########## Code Generation ##############################" />
<BoolProperty ReverseSwitch="GF-" Name="StringPooling" DisplayName="Enable String Pooling" Description="(overrides C/C++ property) Enables the compiler to create a single read-only copy of identical strings in the program image and in memory during execution, resulting in smaller programs, an optimization called string pooling. /O1, /O2, and /ZI automatically set /GF option. " Category="RccCpp" Switch="GF" F1Keyword="VC.Project.VCCLCompilerTool.StringPooling">
</BoolProperty>
<BoolProperty ReverseSwitch="Gm-" Name="MinimalRebuild" DisplayName="Enable Minimal Rebuild" Description="(overrides C/C++ property) Enables minimal rebuild, which determines whether C++ source files that include changed C++ class definitions (stored in header (.h) files) need to be recompiled." Category="RccCpp" Switch="Gm" F1Keyword="VC.Project.VCCLCompilerTool.MinimalRebuild">
</BoolProperty>
<EnumProperty Name="ExceptionHandling" DisplayName="Enable C++ Exceptions" Description="(overrides C/C++ property) Specifies the model of exception handling to be used by the compiler." Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.ExceptionHandling">
<EnumValue Name="Async" Switch="EHa" DisplayName="Yes with SEH Exceptions" Description="The exception-handling model that catches asynchronous (structured) and synchronous (C++) exceptions. (/EHa)">
</EnumValue>
<EnumValue Name="Sync" Switch="EHsc" DisplayName="Yes" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions never throw a C++ exception. (/EHsc)">
</EnumValue>
<EnumValue Name="SyncCThrow" Switch="EHs" DisplayName="Yes with Extern C functions" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions do throw an exception. (/EHs)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No" Description="No exception handling.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SmallerTypeCheck" DisplayName="Smaller Type Check" Description="(overrides C/C++ property) Enable checking for conversion to smaller types, incompatible with any optimization type other than debug. (/RTCc)" Category="RccCpp" Switch="RTCc" F1Keyword="VC.Project.VCCLCompilerTool.SmallerTypeCheck">
</BoolProperty>
<EnumProperty Name="BasicRuntimeChecks" DisplayName="Basic Runtime Checks" Description="(overrides C/C++ property) Perform basic runtime error checks, incompatible with any optimization type other than debug. (/RTCs, /RTCu, /RTC1)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.BasicRuntimeChecks">
<EnumValue Name="StackFrameRuntimeCheck" Switch="RTCs" DisplayName="Stack Frames" Description="Enables stack frame run-time error checking.">
</EnumValue>
<EnumValue Name="UninitializedLocalUsageCheck" Switch="RTCu" DisplayName="Uninitialized variables" Description="Reports when a variable is used without having been initialized.">
</EnumValue>
<EnumValue Name="EnableFastChecks" Switch="RTC1" DisplayName="Both (/RTC1, equiv. to /RTCsu)" Description="Equivalent of /RTCsu.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default runtime checks.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="RuntimeLibrary" DisplayName="Runtime Library" Description="(overrides C/C++ property) Specify runtime library for linking. (/MT, /MTd, /MD, /MDd)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeLibrary">
<EnumValue Name="MultiThreaded" Switch="MT" DisplayName="Multi-threaded" Description="Causes your application to use the multithread, static version of the run-time library.">
</EnumValue>
<EnumValue Name="MultiThreadedDebug" Switch="MTd" DisplayName="Multi-threaded Debug" Description="Defines _DEBUG and _MT. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols.">
</EnumValue>
<EnumValue Name="MultiThreadedDLL" Switch="MD" DisplayName="Multi-threaded DLL" Description="Causes your application to use the multithread- and DLL-specific version of the run-time library. Defines _MT and _DLL and causes the compiler to place the library name MSVCRT.lib into the .obj file.">
</EnumValue>
<EnumValue Name="MultiThreadedDebugDLL" Switch="MDd" DisplayName="Multi-threaded Debug DLL" Description="Defines _DEBUG, _MT, and _DLL and causes your application to use the debug multithread- and DLL-specific version of the run-time library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="StructMemberAlignment" DisplayName="Struct Member Alignment" Description="(overrides C/C++ property) Specifies 1, 2, 4, or 8-byte boundaries for struct member alignment. (/Zp[num])" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.StructMemberAlignment">
<EnumValue Name="1Byte" Switch="Zp1" DisplayName="1 Byte" Description="Packs structures on 1-byte boundaries. Same as /Zp.">
</EnumValue>
<EnumValue Name="2Bytes" Switch="Zp2" DisplayName="2 Bytes" Description="Packs structures on 2-byte boundaries.">
</EnumValue>
<EnumValue Name="4Bytes" Switch="Zp4" DisplayName="4 Byte" Description="Packs structures on 4-byte boundaries.">
</EnumValue>
<EnumValue Name="8Bytes" Switch="Zp8" DisplayName="8 Bytes" Description="Packs structures on 8-byte boundaries (default).">
</EnumValue>
<EnumValue Name="16Bytes" Switch="Zp16" DisplayName="16 Bytes" Description="Packs structures on 16-byte boundaries.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default alignment settings.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="BufferSecurityCheck" DisplayName="Security Check" Description="(overrides C/C++ property) The Security Check helps detect stack-buffer over-runs, a common attempted attack upon a program's security. . (/GS-, /GS)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.BufferSecurityCheck">
<EnumValue Name="false" Switch="GS-" DisplayName="Disable Security Check" Description="Disable Security Check. (/GS-)">
</EnumValue>
<EnumValue Name="true" Switch="GS" DisplayName="Enable Security Check" Description="Enable Security Check. (/GS)">
</EnumValue>
</EnumProperty>
<EnumProperty Name="ControlFlowGuard" DisplayName="Control Flow Guard" Description="(overrides C/C++ property) Guard security check helps detect attempts to dispatch to illegal block of code. (/guard:cf)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.ControlFlowGuard">
<EnumValue Name="Guard" Switch="guard:cf" DisplayName="Yes" Description="Enable Security Check with Guard (/guard:cf)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Gy-" Name="FunctionLevelLinking" DisplayName="Enable Function-Level Linking" Description="(overrides C/C++ property) Allows the compiler to package individual functions in the form of packaged functions (COMDATs). Required for edit and continue to work. (/Gy)" Category="RccCpp" Switch="Gy" F1Keyword="VC.Project.VCCLCompilerTool.EnableFunctionLevelLinking">
</BoolProperty>
<BoolProperty ReverseSwitch="Qpar-" Name="EnableParallelCodeGeneration" DisplayName="Enable Parallel Code Generation" Description="(overrides C/C++ property) Allows the compiler to generate parallel code for loops identified using #pragma loop(hint_parallel[(n)]) when optimization is enabled." Category="RccCpp" Switch="Qpar" F1Keyword="VC.Project.VCCLCompilerTool.EnableParallelCodeGeneration">
</BoolProperty>
<EnumProperty Name="EnableEnhancedInstructionSet" DisplayName="Enable Enhanced Instruction Set" Description="(overrides C/C++ property) Enable use of instructions found on processors that support enhanced instruction sets, e.g., the SSE, SSE2, AVX, AVX2 and AVX-512 enhancements to IA-32; AVX, AVX2 and AVX-512 to x64. Currently /arch:SSE and /arch:SSE2 are only available when building for the x86 architecture. If no option is specified, the compiler will use instructions found on processors that support SSE2. Use of enhanced instructions can be disabled with /arch:IA32. (/arch:SSE, /arch:SSE2, /arch:AVX, /arch:AVX2, /arch:AVX512, /arch:IA32)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.EnableEnhancedInstructionSet">
<EnumValue Name="StreamingSIMDExtensions" Switch="arch:SSE" DisplayName="Streaming SIMD Extensions" Description="Streaming SIMD Extensions. (/arch:SSE)">
</EnumValue>
<EnumValue Name="StreamingSIMDExtensions2" Switch="arch:SSE2" DisplayName="Streaming SIMD Extensions 2" Description="Streaming SIMD Extensions 2. (/arch:SSE2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions" Switch="arch:AVX" DisplayName="Advanced Vector Extensions" Description="Advanced Vector Extensions. (/arch:AVX)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions2" Switch="arch:AVX2" DisplayName="Advanced Vector Extensions 2" Description="Advanced Vector Extensions 2. (/arch:AVX2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions512" Switch="arch:AVX512" DisplayName="Advanced Vector Extensions 512" Description="Advanced Vector Extensions 512. (/arch:AVX512)">
</EnumValue>
<EnumValue Name="NoExtensions" Switch="arch:IA32" DisplayName="No Enhanced Instructions" Description="No Enhanced Instructions. (/arch:IA32)">
</EnumValue>
<EnumValue Name="NotSet" Switch="" DisplayName="Not Set" Description="Not Set.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="FloatingPointModel" DisplayName="Floating Point Model" Description="(overrides C/C++ property) Sets the floating point model. (/fp:precise, /fp:strict, /fp:fast)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.floatingPointModel">
<EnumValue Name="Precise" Switch="fp:precise" DisplayName="Precise" Description="Default. Improves the consistency of floating-point tests for equality and inequality.">
</EnumValue>
<EnumValue Name="Strict" Switch="fp:strict" DisplayName="Strict" Description="The strictest floating-point model. /fp:strict causes fp_contract to be OFF and fenv_access to be ON. /fp:except is implied and can be disabled by explicitly specifying /fp:except-. When used with /fp:except-, /fp:strict enforces strict floating-point semantics but without respect for exceptional events.">
</EnumValue>
<EnumValue Name="Fast" Switch="fp:fast" DisplayName="Fast" Description="Creates the fastest code in the majority of cases. ">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="fp:except-" Name="FloatingPointExceptions" DisplayName="Enable Floating Point Exceptions" Description="(overrides C/C++ property) Reliable floating-point exception model. Exceptions will be raised immediately after they are triggered. (/fp:except)" Category="RccCpp" Switch="fp:except" F1Keyword="VC.Project.VCCLCompilerTool.FloatingPointExceptions">
</BoolProperty>
<BoolProperty Name="CreateHotpatchableImage" DisplayName="Create Hotpatchable Image" Description="(overrides C/C++ property) When hotpatching is on, the compiler ensures that first instruction of each function is two bytes, which is required for hot patching. (/hotpatch)" Category="RccCpp" Switch="hotpatch" F1Keyword="VC.Project.VCCLCompilerTool.CreateHotpatchableImage">
</BoolProperty>
<StringProperty Name="QtCppHeader_Language" Category="RccCpp" ReadOnly="true" DisplayName="########## Language ##############################" />
<BoolProperty Name="DisableLanguageExtensions" DisplayName="Disable Language Extensions" Description="(overrides C/C++ property) Suppresses or enables language extensions. (/Za)" Category="RccCpp" Switch="Za" F1Keyword="VC.Project.VCCLCompilerTool.DisableLanguageExtensions">
</BoolProperty>
<BoolProperty Name="ConformanceMode" DisplayName="Conformance mode" Description="(overrides C/C++ property) Enables or suppresses conformance mode. (/permissive-)" Category="RccCpp" Switch="permissive-" F1Keyword="VC.Project.VCCLCompilerTool.ConformanceMode">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:wchar_t-" Name="TreatWChar_tAsBuiltInType" DisplayName="Treat WChar_t As Built in Type" Description="(overrides C/C++ property) When specified, the type wchar_t becomes a native type that maps to __wchar_t in the same way that short maps to __int16. /Zc:wchar_t is on by default." Category="RccCpp" Switch="Zc:wchar_t" F1Keyword="VC.Project.VCCLCompilerTool.TreatWChar_tAsBuiltInType">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:forScope-" Name="ForceConformanceInForLoopScope" DisplayName="Force Conformance in For Loop Scope" Description="(overrides C/C++ property) Used to implement standard C++ behavior for the for statement loops with Microsoft extensions (/Za, /Ze (Disable Language Extensions)). /Zc:forScope is on by default." Category="RccCpp" Switch="Zc:forScope" F1Keyword="VC.Project.VCCLCompilerTool.ForceConformanceInForLoopScope">
</BoolProperty>
<BoolProperty Name="RemoveUnreferencedCodeData" DisplayName="Remove unreferenced code and data" Description="(overrides C/C++ property) When specified, compiler no longer generates symbol information for unreferenced code and data." Category="RccCpp" Switch="Zc:inline" F1Keyword="VC.Project.VCCLCompilerTool.RemoveUnreferencedCodeData">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:rvalueCast-" Name="EnforceTypeConversionRules" DisplayName="Enforce type conversion rules" Description="(overrides C/C++ property) Used to identify an rvalue reference type as the result of a cast operation in accordance with the C++11 standard." Category="RccCpp" Switch="Zc:rvalueCast" F1Keyword="VC.Project.VCCLCompilerTool.EnforceTypeConversionRules">
</BoolProperty>
<BoolProperty ReverseSwitch="GR-" Name="RuntimeTypeInfo" DisplayName="Enable Run-Time Type Information" Description="(overrides C/C++ property) Adds code for checking C++ object types at run time (runtime type information). (/GR, /GR-)" Category="RccCpp" Switch="GR" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeTypeInfo">
</BoolProperty>
<BoolProperty ReverseSwitch="openmp-" Name="OpenMPSupport" DisplayName="Open MP Support" Description="(overrides C/C++ property) Enable OpenMP 2.0 language extensions. (/openmp)" Category="RccCpp" Switch="openmp" F1Keyword="VC.Project.VCCLCompilerTool.OpenMP">
</BoolProperty>
<EnumProperty Name="LanguageStandard" DisplayName="C++ Language Standard" Description="(overrides C/C++ property) Determines the C++ language standard the compiler will enforce. It is recommended to use the latest version when possible. (/std:c++14, /std:c++17, /std:c++latest)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.CppLanguageStandard">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="stdcpp14" Switch="std:c++14" DisplayName="ISO C++14 Standard">
</EnumValue>
<EnumValue Name="stdcpp17" Switch="std:c++17" DisplayName="ISO C++17 Standard">
</EnumValue>
<EnumValue Name="stdcpplatest" Switch="std:c++latest" DisplayName="Preview - Features from the Latest C++ Working Draft">
</EnumValue>
</EnumProperty>
<BoolProperty Name="EnableModules" DisplayName="Enable C++ Modules (experimental)" Description="(overrides C/C++ property) Experimental support for the C++ Modules TS and Standard Library modules." Category="RccCpp" Switch="experimental:module" F1Keyword="VC.Project.VCCLCompilerTool.ModulesSupport">
</BoolProperty>
<StringProperty Name="QtCppHeader_Precompiled_Headers" Category="RccCpp" ReadOnly="true" DisplayName="########## Precompiled Headers ##############################" />
<EnumProperty Name="PrecompiledHeader" DisplayName="Precompiled Header" Description="(overrides C/C++ property) Create/Use Precompiled Header : Enables creation or use of a precompiled header during the build. (/Yc, /Yu)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.UsePrecompiledHeader">
<EnumValue Name="Create" Switch="Yc" DisplayName="Create" Description="Instructs the compiler to create a precompiled header (.pch) file that represents the state of compilation at a certain point.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="Use" Switch="Yu" DisplayName="Use" Description="Instructs the compiler to use an existing precompiled header (.pch) file in the current compilation.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="NotUsing" Switch="" DisplayName="Not Using Precompiled Headers" Description="Not using precompiled headers. ">
</EnumValue>
</EnumProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderFile" DisplayName="Precompiled Header File" Description="(overrides C/C++ property) Specifies header file name to use when creating or using a precompiled header file. (/Yc[name], /Yu[name])" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderThrough">
</StringProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderOutputFile" DisplayName="Precompiled Header Output File" Description="(overrides C/C++ property) Specifies the path and/or name of the generated precompiled header file. (/Fp[name])" Category="RccCpp" Switch="Fp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Output_Files" Category="RccCpp" ReadOnly="true" DisplayName="########## Output Files ##############################" />
<BoolProperty Name="ExpandAttributedSource" DisplayName="Expand Attributed Source" Description="(overrides C/C++ property) Create listing file with expanded attributes injected into source file. (/Fx)" Category="RccCpp" Switch="Fx" F1Keyword="VC.Project.VCCLCompilerTool.ExpandAttributedSource">
</BoolProperty>
<EnumProperty Name="AssemblerOutput" DisplayName="Assembler Output" Description="(overrides C/C++ property) Specifies the contents of assembly language output file. (/FA, /FAc, /FAs, /FAcs)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerOutput">
<EnumValue Name="NoListing" Switch="" DisplayName="No Listing" Description="No listing. ">
</EnumValue>
<EnumValue Name="AssemblyCode" Switch="FA" DisplayName="Assembly-Only Listing" Description="Assembly code; .asm">
</EnumValue>
<EnumValue Name="AssemblyAndMachineCode" Switch="FAc" DisplayName="Assembly With Machine Code" Description="Machine and assembly code; .cod">
</EnumValue>
<EnumValue Name="AssemblyAndSourceCode" Switch="FAs" DisplayName="Assembly With Source Code" Description="Source and assembly code; .asm">
</EnumValue>
<EnumValue Name="All" Switch="FAcs" DisplayName="Assembly, Machine Code and Source" Description="Assembly, machine code and source code; .cod">
</EnumValue>
</EnumProperty>
<BoolProperty Name="UseUnicodeForAssemblerListing" DisplayName="Use Unicode For Assembler Listing" Description="(overrides C/C++ property) Causes the output file to be created in UTF-8 format. " Category="RccCpp" Switch="FAu" F1Keyword="VC.Project.VCCLCompilerTool.UseUnicodeForAssemblerListing">
</BoolProperty>
<StringProperty Subtype="file" Name="AssemblerListingLocation" DisplayName="ASM List Location" Description="(overrides C/C++ property) Specifies relative path and/or name for ASM listing file; can be file or directory name. (/Fa[name])" Category="RccCpp" Switch="Fa" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerListingLocation">
</StringProperty>
<StringProperty Subtype="file" Name="ObjectFileName" DisplayName="Object File Name" Description="(overrides C/C++ property) Specifies a name to override the default object file name; can be file or directory name. (/Fo[name])" Category="RccCpp" Switch="Fo" F1Keyword="VC.Project.VCCLCompilerTool.ObjectFile">
</StringProperty>
<StringProperty Subtype="file" Name="ProgramDataBaseFileName" DisplayName="Program Database File Name" Description="(overrides C/C++ property) Specifies a name for a compiler-generated PDB file; also specifies base name for the required compiler-generated IDB file; can be file or directory name. (/Fd[name])" Category="RccCpp" Switch="Fd" F1Keyword="VC.Project.VCCLCompilerTool.ProgramDataBaseFileName">
</StringProperty>
<BoolProperty Name="GenerateXMLDocumentationFiles" DisplayName="Generate XML Documentation Files" Description="(overrides C/C++ property) Specifies that the compiler should generate XML documentation comment files (.XDC). (/doc)" Category="RccCpp" Switch="doc" F1Keyword="VC.Project.VCCLCompilerTool.GenerateXMLDocumentationFiles">
<Argument Property="XMLDocumentationFileName" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="XMLDocumentationFileName" DisplayName="XML Documentation File Name" Description="(overrides C/C++ property) Specifies the name of the generated XML documentation files; can be file or directory name. (/doc[name])" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.XMLDocumentationFileName">
</StringProperty>
<StringProperty Name="QtCppHeader_Browse_Information" Category="RccCpp" ReadOnly="true" DisplayName="########## Browse Information ##############################" />
<BoolProperty Name="BrowseInformation" DisplayName="Enable Browse Information" Description="(overrides C/C++ property) Enable Browse Information : Specifies level of browse information in .bsc file. (/FR)" Category="RccCpp" Switch="FR" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformation">
<Argument Property="BrowseInformationFile" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="BrowseInformationFile" DisplayName="Browse Information File" Description="(overrides C/C++ property) Browse File : Specifies optional name for browser information file. (/FR[name])" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformationFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Advanced" Category="RccCpp" ReadOnly="true" DisplayName="########## Advanced ##############################" />
<EnumProperty Name="CallingConvention" DisplayName="Calling Convention" Description="(overrides C/C++ property) Select the default calling convention for your application (can be overridden by function). (/Gd, /Gr, /Gz, /Gv)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.CallingConvention">
<EnumValue Name="Cdecl" Switch="Gd" DisplayName="__cdecl" Description="Specifies the __cdecl calling convention for all functions except C++ member functions and functions marked __stdcall or __fastcall.">
</EnumValue>
<EnumValue Name="FastCall" Switch="Gr" DisplayName="__fastcall" Description="Specifies the __fastcall calling convention for all functions except C++ member sfunctions and functions marked __cdecl or __stdcall. All __fastcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="StdCall" Switch="Gz" DisplayName="__stdcall" Description="Specifies the __stdcall calling convention for all functions except C++ member functions and functions marked __cdecl or __fastcall. All __stdcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="VectorCall" Switch="Gv" DisplayName="__vectorcall" Description="Specifies the __vectorcall calling convention for all functions except C++ member functions and functions marked __cdecl, __fastcall, or __stdcall. All __vectorcall functions must have prototypes.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="CompileAs" DisplayName="Compile As" Description="(overrides C/C++ property) Select compile language option for .c and .cpp files. (/TC, /TP)" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAs">
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default.">
</EnumValue>
<EnumValue Name="CompileAsC" Switch="TC" DisplayName="Compile as C Code" Description="Compile as C Code.">
</EnumValue>
<EnumValue Name="CompileAsCpp" Switch="TP" DisplayName="Compile as C++ Code" Description="Compile as C++ Code.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="DisableSpecificWarnings" DisplayName="Disable Specific Warnings" Description="(overrides C/C++ property) Disable the desired warning numbers; put numbers in a semi-colon delimited list. (/wd[num])" Category="RccCpp" Switch="wd" F1Keyword="VC.Project.VCCLCompilerTool.DisableSpecificWarnings">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedIncludeFiles" DisplayName="Forced Include File" Description="(overrides C/C++ property) one or more forced include files. (/FI[name])" Category="RccCpp" Switch="FI" F1Keyword="VC.Project.VCCLCompilerTool.ForcedIncludeFiles">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedUsingFiles" DisplayName="Forced #using File" Description="(overrides C/C++ property) Specifies one or more forced #using files. (/FU[name])" Category="RccCpp" Switch="FU" F1Keyword="VC.Project.VCCLCompilerTool.ForcedUsingFiles">
</StringListProperty>
<BoolProperty Name="ShowIncludes" DisplayName="Show Includes" Description="(overrides C/C++ property) Generates a list of include files with compiler output. (/showIncludes)" Category="RccCpp" Switch="showIncludes" F1Keyword="VC.Project.VCCLCompilerTool.ShowIncludes">
</BoolProperty>
<BoolProperty Name="UseFullPaths" DisplayName="Use Full Paths" Description="(overrides C/C++ property) Use full paths in diagnostic messages. (/FC)" Category="RccCpp" Switch="FC" F1Keyword="VC.Project.VCCLCompilerTool.UseFullPaths">
</BoolProperty>
<BoolProperty Name="OmitDefaultLibName" DisplayName="Omit Default Library Name" Description="(overrides C/C++ property) Do not include default library names in .obj files. (/Zl)" Category="RccCpp" Switch="Zl" F1Keyword="VC.Project.VCCLCompilerTool.OmitDefaultLibName">
</BoolProperty>
<EnumProperty Name="ErrorReporting" DisplayName="Internal Compiler Error Reporting" Description="(overrides C/C++ property) Specifies how internal tool errors should be reported back to Microsoft. The default in the IDE is prompt. The default from command line builds is queue. (/errorReport:[method])" Category="RccCpp" F1Keyword="VC.Project.VCCLCompilerTool.ErrorReporting">
<EnumValue Name="None" Switch="errorReport:none" DisplayName="Do Not Send Report" Description="Reports about internal compiler errors will not be collected or sent to Microsoft.">
</EnumValue>
<EnumValue Name="Prompt" Switch="errorReport:prompt" DisplayName="Prompt Immediately" Description="Prompts you to send a report when you receive an internal compiler error.">
</EnumValue>
<EnumValue Name="Queue" Switch="errorReport:queue" DisplayName="Queue For Next Login" Description="Queues the error report. When you log in with administrator privileges, a pop-up window is displayed and allows you to report any failures since the last time you were logged in (you will not be prompted to send reports for failures more than once every three days). queue is the default when compiling an application at the command line.">
</EnumValue>
<EnumValue Name="Send" Switch="errorReport:send" DisplayName="Send Automatically" Description="Automatically sends reports of internal compiler errors to Microsoft. To enable this option, you must first agree to Microsoft%27s data collection policy. The first time you specify /errorReport:send on a computer, a compiler message will refer you to a website that contains Microsoft%27s data collection policy.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="TreatSpecificWarningsAsErrors" DisplayName="Treat Specific Warnings As Errors" Description="(overrides C/C++ property) Treats the specific compiler warning as an error where n is a compiler warning." Category="RccCpp" Switch="we" F1Keyword="VC.Project.VCCLCompilerTool.TreatSpecificWarningsAsErrors">
</StringListProperty>
<!-- END Generated Text -->
<StringProperty
Name="AdditionalCppOptions"
DisplayName="Additional Options"
Description="Additional Options."
Category="RccCpp"/>
</Rule>
<ItemType
Name="QtRcc"
DisplayName="Qt Resource Compiler (rcc)" />
<FileExtension
Name="*.qrc"
ContentType="QtRcc" />
<ContentType
Name="QtRcc"
DisplayName="Qt Resource Compiler (rcc)"
ItemType="QtRcc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,46 @@
<?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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qtrepc.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qtrepc.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,73 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild repc property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeRepc)' != ''"
Project="$(QtMsBuildProps_BeforeRepc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtRepc item template
// -->
<ItemDefinitionGroup>
<QtRepc>
<ExecutionDescription>repc %(Identity)</ExecutionDescription>
<QTDIR Condition="'$(QtVsProjectSettings)' == 'true'">$(QtInstallDir)</QTDIR>
<QTDIR Condition="'$(QtVsProjectSettings)' != 'true'">$(QTDIR)</QTDIR>
<InputFile>%(FullPath)</InputFile>
<OutputFileType>replica</OutputFileType>
<OutputFile><![CDATA[$(IntDir)\repc\rep_%(Filename)_%<OutputFileType>.h]]></OutputFile>
<InputFileType>rep</InputFileType>
<DynamicSource>moc_cpp</DynamicSource>
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
<Outputs>%(OutputFile)</Outputs>
</QtRepc>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterRepc)' != ''"
Project="$(QtMsBuildProps_AfterRepc)"/>
</Project>

@ -0,0 +1,387 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Definitions specific to repc
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeRepc)' != ''"
Project="$(QtMsBuildTargets_BeforeRepc)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtBuildTargets>QtRepc;$(QtBuildTargets)</QtBuildTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup item type and property page
// -->
<Choose>
<When Condition="'$(QtVsProjectSettings)' == 'true' AND '$(QtVsProjectClProperties)' == 'true'">
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtrepc_v3.xml" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtrepc.xml" />
</ItemGroup>
</Otherwise>
</Choose>
<ItemGroup>
<AvailableItemName Include="QtRepc">
<Targets>Qt</Targets>
</AvailableItemName>
</ItemGroup>
<PropertyGroup>
<QtRepcRuleName>QtRule60_Repc</QtRepcRuleName>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRepcPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare to process sources
// -->
<Target Name="QtRepcPrepare"
Inputs="%(QtRepc.Identity)" Outputs="@(QtRepc->'####### Don't skip this target #######')">
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRepcPrepare @(QtRepc)"/>
<!--// Expand build-time metadata ( %<Foo> ) -->
<Expand Condition="'@(QtRepc)' != ''"
Items="@(QtRepc)" BaseItem="@(QtRepc)" Template="@(QtRepc)">
<Output TaskParameter="Result" ItemName="QtRepcExp"/>
</Expand>
<ItemGroup>
<QtRepc Remove="@(QtRepc)"/>
<QtRepc Include="@(QtRepcExp->'%(Identity)')"/>
<QtRepcExp Remove="@(QtRepcExp)"/>
</ItemGroup>
<PropertyGroup>
<selected_files>[@(selected_files->'%(Identity)','][')]</selected_files>
<file>[@(QtRepc->'%(Identity)')]</file>
<output_file>@(QtRepc->'%(OutputFile)')</output_file>
<is_selected Condition="$(selected_files.Contains('$(file)'))">true</is_selected>
<is_selected Condition="!$(selected_files.Contains('$(file)'))">false</is_selected>
</PropertyGroup>
<!--// Delete output file to force build of source if it was manually selected to build
// (e.g. by the 'Compile' option in the context menu for the file) -->
<Delete Files="$(output_file)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'" />
<!--// If a source was manually selected to build, remove all other sources -->
<ItemGroup Condition="'@(selected_files)' != ''">
<QtRepc Remove="@(QtRepc)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' != 'true'" />
</ItemGroup>
<!--// Remove sources excluded from build -->
<ItemGroup>
<QtRepc Remove="@(QtRepc)"
Condition="'$(SelectedFiles)' == '' AND '%(QtRepc.ExcludedFromBuild)' == 'true'"/>
</ItemGroup>
<!--// Add repc output dir to C++ include path -->
<ItemGroup Condition="'@(QtRepc)' != ''">
<QtIncludePath Include="$([System.IO.Path]::GetDirectoryName('%(QtRepc.OutputFile)'))"/>
</ItemGroup>
<!--// Clean-up -->
<PropertyGroup>
<selected_files/>
<file/>
<output_file/>
<is_selected/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRepcSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputChanged flag if source file or dependencies have been modified
// -->
<Target Name="QtRepcSetModified" DependsOnTargets="QtRepcPrepare"
Condition="'@(QtRepc)' != ''"
Inputs="%(QtRepc.FullPath);%(QtRepc.AdditionalDependencies)" Outputs="@(QtRepc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRepcSetModified @(QtRepc)" />
<CreateProperty Value="true">
<!-- // Using ValueSetByTask ensures $(input_changed) is only set to 'true' when the target
// is actually executed and not when MSBuild is figuring out which targets to run -->
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtRepc>
<InputChanged>$(input_changed)</InputChanged>
</QtRepc>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRepcOverrideCpp
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<Import Project="qtrepc_cl.targets"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtRepc
/////////////////////////////////////////////////////////////////////////////////////////////////
// Process each source file and produce the corresponding QtWork items
// -->
<PropertyGroup>
<QtRepcDependsOn>
QtPrepare;
QtRepcPrepare;
QtRepcSetModified;
QtRepcOverrideCpp;
$(QtRepcDependsOn)
</QtRepcDependsOn>
</PropertyGroup>
<Target Name="QtRepc"
DependsOnTargets="$(QtRepcDependsOn)"
BeforeTargets="$(QtRepcBeforeTargets)" AfterTargets="$(QtRepcAfterTargets)"
Condition="'@(QtRepc)' != ''"
Inputs="%(QtRepc.FullPath);%(QtRepc.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtRepc->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## QtRepc @(QtRepc)" />
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert string lists in source item properties to lists of items
// -->
<Flatten Items="@(QtRepc)"
Metadata="InputFile;
OutputFile;
InputFileType;
OutputFileType;
IncludePath;
AlwaysClass;
PrintDebug">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="InputFile;
OutputFile;
IncludePath">
<Output
TaskParameter="Result" ItemName="options" />
</HostTranslatePaths>
<ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Remove quotes from all paths
// Escape trailing back-slash in paths
// Add quotes to paths containing spaces
// -->
<options>
<Value Condition="'%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath'"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'IncludePath')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate tool command line arguments
// -->
<!--// -i <rep|src> Input file type -->
<options>
<Value Condition="'%(Name)' == 'InputFileType'">-i %(Value)</Value>
</options>
<!--// -o <source|replica|merged|rep> Output file type -->
<options>
<Value Condition="'%(Name)' == 'OutputFileType'">-o %(Value)</Value>
</options>
<!--// -I <dir> Add dir to the include path for header files -->
<options>
<Value Condition="'%(Name)' == 'IncludePath'">-I%(Value)</Value>
</options>
<!--// -c Always output 'class' type for .rep files -->
<options>
<Value Condition="'%(Name)' == 'AlwaysClass' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'AlwaysClass' AND '%(Value)' == 'true'">-c</Value>
</options>
<!--// -d Print out parsing debug information -->
<options>
<Value Condition="'%(Name)' == 'PrintDebug' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'PrintDebug' AND '%(Value)' == 'true'">-d</Value>
</options>
<!--// [header-file/rep-file] Input header/rep file to read from -->
<options>
<Value Condition="'%(Name)' == 'InputFile'">%(Value)</Value>
</options>
<!--// [rep-file/header-file] Output header/rep file to write to -->
<options>
<Value Condition="'%(Name)' == 'OutputFile'">%(Value)</Value>
</options>
</ItemGroup>
<PropertyGroup>
<options>@(options->'%(Value)', ' ')</options>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Aux properties
// -->
<PropertyGroup>
<!--// Force modified flag if source was manually selected to build -->
<input_changed Condition="'$(SelectedFiles)' != ''"
>true</input_changed>
<input_changed Condition="'$(SelectedFiles)' == ''"
>%(QtRepc.InputChanged)</input_changed>
<!--// Run work in parallel processes -->
<run_parallel Condition="'@(QtRepc)' != ''
AND '%(QtRepc.ParallelProcess)' == 'true'
AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<!--// Run work in single process -->
<run_single Condition="'@(QtRepc)' != ''
AND ('%(QtRepc.ParallelProcess)' != 'true'
OR '$(SelectedFiles)' != '')"
>true</run_single>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Create work item
// -->
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtRepc)">
<WorkType>repc</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)/repc</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtRepc.QTDIR)\bin\repc.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtRepc.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
<InputChanged>$(input_changed)</InputChanged>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
</QtWork>
</ItemGroup>
<ItemGroup Condition="'@(QtRepc)' != '' AND '@(QtRepc->'%(DynamicSource)')' != 'false'">
<QtMoc Include="%(QtRepc.OutputFile)">
<DependsOn>@(QtRepc)</DependsOn>
<DynamicSource Condition="'%(QtRepc.DynamicSource)' == 'moc_cpp'">output</DynamicSource>
<DynamicSource Condition="'%(QtRepc.DynamicSource)' == 'moc'">false</DynamicSource>
</QtMoc>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<options/>
<dependencies_changed/>
<input_changed/>
<run_parallel/>
<run_single/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<options Remove="@(options)"/>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterRepc)' != ''"
Project="$(QtMsBuildTargets_AfterRepc)"/>
</Project>

@ -0,0 +1,237 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Defines the fields included in the repc property page, as well as any
// other metadata associated to QtRepc items
// -->
<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"
PageTemplate="tool"
DisplayName="Qt Remote Objects Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRepc" />
</Rule.DataSource>
<Rule.Categories>
<Category
Name="General">
<Category.DisplayName>
<sys:String>repc.exe</sys:String>
</Category.DisplayName>
</Category>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRepc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False" />
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<EnumProperty
Name="InputFileType"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Input File Type">
<EnumValue
Name="rep"
DisplayName="Replicant template"/>
<EnumValue
Name="src"
DisplayName="C++ QObject derived classes"/>
</EnumProperty>
<StringProperty
Name="InputFile"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Input File"
Description="Input header/rep file to read from. ([header-file/rep-file])" />
<EnumProperty
Name="OutputFileType"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Output File Type">
<EnumValue
Name="source"
DisplayName="source (Source header)"/>
<EnumValue
Name="replica"
DisplayName="replica (Replica header)"/>
<EnumValue
Name="merged"
DisplayName="merged (Combined replica/source)"/>
<EnumValue
Name="rep"
DisplayName="rep (Replicant template)"/>
</EnumProperty>
<StringProperty
Name="OutputFile"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Output File"
Description="Output header/rep file to write to. ([rep-file/header-file])" />
<StringListProperty
Name="IncludePath"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Include Path"
Description=
"Add &lt;dir&gt; to the include path for header files. This parameter is needed only if the input
file type is src (.h file). Separate with semicolons if more than one. (-I&lt;dir&gt;)"/>
<BoolProperty
Name="AlwaysClass"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Always Output Class Type"
Description="Always output 'class' type for .rep files and never 'POD'. (-c)"/>
<BoolProperty
Name="PrintDebug"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Print Debug Information"
Description="Print out parsing debug information (for troubleshooting). (-d)"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtRepcBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRepcBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtRepcAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRepcAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic moc Source"
Description="Add output file to list of moc sources during build.">
<EnumValue
Name="moc_cpp"
DisplayName="Output moc header and moc-generated C++"
Description="Use output as dynamic moc source, and output of moc as dynamic C++ source."/>
<EnumValue
Name="moc"
DisplayName="Output moc header"
Description="Use output as dynamic moc source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
</Rule>
<ItemType
Name="QtRepc"
DisplayName="Qt Remote Objects Compiler (repc)" />
<FileExtension
Name="*.rep"
ContentType="QtRepc" />
<ContentType
Name="QtRepc"
DisplayName="Qt Remote Objects Compiler (repc)"
ItemType="QtRepc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,167 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="QtRepcOverrideCpp" DependsOnTargets="QtRepcPrepare"
Inputs="%(QtRepc.Identity)" Outputs="@(QtRepc->'####### Don't skip this target #######')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtRepcOverrideCpp @(QtRepc)" />
<PropertyGroup Condition="'$(QtVsProjectClProperties)' == 'true'">
<override_cl_compile>%(QtRepc.OverrideClCompile)</override_cl_compile>
</PropertyGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'extend'">
<QtRepc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)');%(QtRepc.AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)');%(QtRepc.AdditionalUsingDirectories)</AdditionalUsingDirectories>
<PreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)');%(QtRepc.PreprocessorDefinitions)</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)');%(QtRepc.UndefinePreprocessorDefinitions)</UndefinePreprocessorDefinitions>
<DisableSpecificWarnings>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)');%(QtRepc.DisableSpecificWarnings)</DisableSpecificWarnings>
<ForcedIncludeFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)');%(QtRepc.ForcedIncludeFiles)</ForcedIncludeFiles>
<ForcedUsingFiles>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)');%(QtRepc.ForcedUsingFiles)</ForcedUsingFiles>
<TreatSpecificWarningsAsErrors>@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)');%(QtRepc.TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
</QtRepc>
<QtRepc>
<IncludePath>%(QtRepc.AdditionalIncludeDirectories)</IncludePath>
</QtRepc>
</ItemGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'replace'">
<QtRepc>
<IncludePath Condition="'%(QtRepc.AdditionalIncludeDirectories)' != ''"
>%(QtRepc.AdditionalIncludeDirectories)</IncludePath>
<IncludePath Condition="'%(QtRepc.AdditionalIncludeDirectories)' == ''"
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalIncludeDirectories)')</IncludePath>
</QtRepc>
</ItemGroup>
<ItemGroup Condition="'$(override_cl_compile)' == 'false'">
<QtRepc>
<!-- BEGIN Generated Text -->
<AdditionalIncludeDirectories Condition="'%(QtRepc.AdditionalIncludeDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalIncludeDirectories)')</AdditionalIncludeDirectories>
<AdditionalUsingDirectories Condition="'%(QtRepc.AdditionalUsingDirectories)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AdditionalUsingDirectories)')</AdditionalUsingDirectories>
<DebugInformationFormat Condition="'%(QtRepc.DebugInformationFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DebugInformationFormat)')</DebugInformationFormat>
<SupportJustMyCode Condition="'%(QtRepc.SupportJustMyCode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SupportJustMyCode)')</SupportJustMyCode>
<CompileAsManaged Condition="'%(QtRepc.CompileAsManaged)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsManaged)')</CompileAsManaged>
<CompileAsWinRT Condition="'%(QtRepc.CompileAsWinRT)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAsWinRT)')</CompileAsWinRT>
<SuppressStartupBanner Condition="'%(QtRepc.SuppressStartupBanner)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SuppressStartupBanner)')</SuppressStartupBanner>
<WarningLevel Condition="'%(QtRepc.WarningLevel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningLevel)')</WarningLevel>
<TreatWarningAsError Condition="'%(QtRepc.TreatWarningAsError)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWarningAsError)')</TreatWarningAsError>
<WarningVersion Condition="'%(QtRepc.WarningVersion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WarningVersion)')</WarningVersion>
<DiagnosticsFormat Condition="'%(QtRepc.DiagnosticsFormat)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DiagnosticsFormat)')</DiagnosticsFormat>
<SDLCheck Condition="'%(QtRepc.SDLCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SDLCheck)')</SDLCheck>
<MultiProcessorCompilation Condition="'%(QtRepc.MultiProcessorCompilation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MultiProcessorCompilation)')</MultiProcessorCompilation>
<Optimization Condition="'%(QtRepc.Optimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(Optimization)')</Optimization>
<InlineFunctionExpansion Condition="'%(QtRepc.InlineFunctionExpansion)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(InlineFunctionExpansion)')</InlineFunctionExpansion>
<IntrinsicFunctions Condition="'%(QtRepc.IntrinsicFunctions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IntrinsicFunctions)')</IntrinsicFunctions>
<FavorSizeOrSpeed Condition="'%(QtRepc.FavorSizeOrSpeed)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FavorSizeOrSpeed)')</FavorSizeOrSpeed>
<OmitFramePointers Condition="'%(QtRepc.OmitFramePointers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitFramePointers)')</OmitFramePointers>
<EnableFiberSafeOptimizations Condition="'%(QtRepc.EnableFiberSafeOptimizations)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableFiberSafeOptimizations)')</EnableFiberSafeOptimizations>
<WholeProgramOptimization Condition="'%(QtRepc.WholeProgramOptimization)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(WholeProgramOptimization)')</WholeProgramOptimization>
<PreprocessorDefinitions Condition="'%(QtRepc.PreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessorDefinitions)')</PreprocessorDefinitions>
<UndefinePreprocessorDefinitions Condition="'%(QtRepc.UndefinePreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefinePreprocessorDefinitions)')</UndefinePreprocessorDefinitions>
<UndefineAllPreprocessorDefinitions Condition="'%(QtRepc.UndefineAllPreprocessorDefinitions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UndefineAllPreprocessorDefinitions)')</UndefineAllPreprocessorDefinitions>
<IgnoreStandardIncludePath Condition="'%(QtRepc.IgnoreStandardIncludePath)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(IgnoreStandardIncludePath)')</IgnoreStandardIncludePath>
<PreprocessToFile Condition="'%(QtRepc.PreprocessToFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessToFile)')</PreprocessToFile>
<PreprocessSuppressLineNumbers Condition="'%(QtRepc.PreprocessSuppressLineNumbers)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessSuppressLineNumbers)')</PreprocessSuppressLineNumbers>
<PreprocessKeepComments Condition="'%(QtRepc.PreprocessKeepComments)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PreprocessKeepComments)')</PreprocessKeepComments>
<StringPooling Condition="'%(QtRepc.StringPooling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StringPooling)')</StringPooling>
<MinimalRebuild Condition="'%(QtRepc.MinimalRebuild)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(MinimalRebuild)')</MinimalRebuild>
<ExceptionHandling Condition="'%(QtRepc.ExceptionHandling)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExceptionHandling)')</ExceptionHandling>
<SmallerTypeCheck Condition="'%(QtRepc.SmallerTypeCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(SmallerTypeCheck)')</SmallerTypeCheck>
<BasicRuntimeChecks Condition="'%(QtRepc.BasicRuntimeChecks)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BasicRuntimeChecks)')</BasicRuntimeChecks>
<RuntimeLibrary Condition="'%(QtRepc.RuntimeLibrary)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeLibrary)')</RuntimeLibrary>
<StructMemberAlignment Condition="'%(QtRepc.StructMemberAlignment)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(StructMemberAlignment)')</StructMemberAlignment>
<BufferSecurityCheck Condition="'%(QtRepc.BufferSecurityCheck)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BufferSecurityCheck)')</BufferSecurityCheck>
<ControlFlowGuard Condition="'%(QtRepc.ControlFlowGuard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ControlFlowGuard)')</ControlFlowGuard>
<FunctionLevelLinking Condition="'%(QtRepc.FunctionLevelLinking)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FunctionLevelLinking)')</FunctionLevelLinking>
<EnableParallelCodeGeneration Condition="'%(QtRepc.EnableParallelCodeGeneration)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableParallelCodeGeneration)')</EnableParallelCodeGeneration>
<EnableEnhancedInstructionSet Condition="'%(QtRepc.EnableEnhancedInstructionSet)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableEnhancedInstructionSet)')</EnableEnhancedInstructionSet>
<FloatingPointModel Condition="'%(QtRepc.FloatingPointModel)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointModel)')</FloatingPointModel>
<FloatingPointExceptions Condition="'%(QtRepc.FloatingPointExceptions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(FloatingPointExceptions)')</FloatingPointExceptions>
<CreateHotpatchableImage Condition="'%(QtRepc.CreateHotpatchableImage)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CreateHotpatchableImage)')</CreateHotpatchableImage>
<DisableLanguageExtensions Condition="'%(QtRepc.DisableLanguageExtensions)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableLanguageExtensions)')</DisableLanguageExtensions>
<ConformanceMode Condition="'%(QtRepc.ConformanceMode)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ConformanceMode)')</ConformanceMode>
<TreatWChar_tAsBuiltInType Condition="'%(QtRepc.TreatWChar_tAsBuiltInType)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatWChar_tAsBuiltInType)')</TreatWChar_tAsBuiltInType>
<ForceConformanceInForLoopScope Condition="'%(QtRepc.ForceConformanceInForLoopScope)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForceConformanceInForLoopScope)')</ForceConformanceInForLoopScope>
<RemoveUnreferencedCodeData Condition="'%(QtRepc.RemoveUnreferencedCodeData)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RemoveUnreferencedCodeData)')</RemoveUnreferencedCodeData>
<EnforceTypeConversionRules Condition="'%(QtRepc.EnforceTypeConversionRules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnforceTypeConversionRules)')</EnforceTypeConversionRules>
<RuntimeTypeInfo Condition="'%(QtRepc.RuntimeTypeInfo)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(RuntimeTypeInfo)')</RuntimeTypeInfo>
<OpenMPSupport Condition="'%(QtRepc.OpenMPSupport)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OpenMPSupport)')</OpenMPSupport>
<LanguageStandard Condition="'%(QtRepc.LanguageStandard)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(LanguageStandard)')</LanguageStandard>
<EnableModules Condition="'%(QtRepc.EnableModules)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(EnableModules)')</EnableModules>
<PrecompiledHeader Condition="'%(QtRepc.PrecompiledHeader)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeader)')</PrecompiledHeader>
<PrecompiledHeaderFile Condition="'%(QtRepc.PrecompiledHeaderFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderFile)')</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile Condition="'%(QtRepc.PrecompiledHeaderOutputFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(PrecompiledHeaderOutputFile)')</PrecompiledHeaderOutputFile>
<ExpandAttributedSource Condition="'%(QtRepc.ExpandAttributedSource)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ExpandAttributedSource)')</ExpandAttributedSource>
<AssemblerOutput Condition="'%(QtRepc.AssemblerOutput)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerOutput)')</AssemblerOutput>
<UseUnicodeForAssemblerListing Condition="'%(QtRepc.UseUnicodeForAssemblerListing)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseUnicodeForAssemblerListing)')</UseUnicodeForAssemblerListing>
<AssemblerListingLocation Condition="'%(QtRepc.AssemblerListingLocation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(AssemblerListingLocation)')</AssemblerListingLocation>
<ObjectFileName Condition="'%(QtRepc.ObjectFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ObjectFileName)')</ObjectFileName>
<ProgramDataBaseFileName Condition="'%(QtRepc.ProgramDataBaseFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ProgramDataBaseFileName)')</ProgramDataBaseFileName>
<GenerateXMLDocumentationFiles Condition="'%(QtRepc.GenerateXMLDocumentationFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(GenerateXMLDocumentationFiles)')</GenerateXMLDocumentationFiles>
<XMLDocumentationFileName Condition="'%(QtRepc.XMLDocumentationFileName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(XMLDocumentationFileName)')</XMLDocumentationFileName>
<BrowseInformation Condition="'%(QtRepc.BrowseInformation)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformation)')</BrowseInformation>
<BrowseInformationFile Condition="'%(QtRepc.BrowseInformationFile)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(BrowseInformationFile)')</BrowseInformationFile>
<CallingConvention Condition="'%(QtRepc.CallingConvention)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CallingConvention)')</CallingConvention>
<CompileAs Condition="'%(QtRepc.CompileAs)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(CompileAs)')</CompileAs>
<DisableSpecificWarnings Condition="'%(QtRepc.DisableSpecificWarnings)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(DisableSpecificWarnings)')</DisableSpecificWarnings>
<ForcedIncludeFiles Condition="'%(QtRepc.ForcedIncludeFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedIncludeFiles)')</ForcedIncludeFiles>
<ForcedUsingFiles Condition="'%(QtRepc.ForcedUsingFiles)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ForcedUsingFiles)')</ForcedUsingFiles>
<ShowIncludes Condition="'%(QtRepc.ShowIncludes)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ShowIncludes)')</ShowIncludes>
<UseFullPaths Condition="'%(QtRepc.UseFullPaths)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(UseFullPaths)')</UseFullPaths>
<OmitDefaultLibName Condition="'%(QtRepc.OmitDefaultLibName)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(OmitDefaultLibName)')</OmitDefaultLibName>
<ErrorReporting Condition="'%(QtRepc.ErrorReporting)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(ErrorReporting)')</ErrorReporting>
<TreatSpecificWarningsAsErrors Condition="'%(QtRepc.TreatSpecificWarningsAsErrors)' != ''">@(ClCompile-&gt;WithMetadataValue('Identity','DefaultClCompile')-&gt;'%(TreatSpecificWarningsAsErrors)')</TreatSpecificWarningsAsErrors>
<!-- END Generated Text -->
<IncludePath
>@(ClCompile->
WithMetadataValue('Identity','DefaultClCompile')->
'%(AdditionalIncludeDirectories)')</IncludePath>
</QtRepc>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<override_cl_compile/>
</PropertyGroup>
</Target>
</Project>

@ -0,0 +1,572 @@
<?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$
**
*****************************************************************************
** This file was generated automatically.
*****************************************************************************
-->
<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"
PageTemplate="tool"
DisplayName="Qt Remote Objects Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRepc" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="repc"/>
<Category Name="RepcCpp" DisplayName="Override C/C++"/>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtRepc"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False" />
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<EnumProperty
Name="InputFileType"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Input File Type">
<EnumValue
Name="rep"
DisplayName="Replicant template"/>
<EnumValue
Name="src"
DisplayName="C++ QObject derived classes"/>
</EnumProperty>
<StringProperty
Name="InputFile"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Input File"
Description="Input header/rep file to read from. ([header-file/rep-file])" />
<EnumProperty
Name="OutputFileType"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Output File Type">
<EnumValue
Name="source"
DisplayName="source (Source header)"/>
<EnumValue
Name="replica"
DisplayName="replica (Replica header)"/>
<EnumValue
Name="merged"
DisplayName="merged (Combined replica/source)"/>
<EnumValue
Name="rep"
DisplayName="rep (Replicant template)"/>
</EnumProperty>
<StringProperty
Name="OutputFile"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Output File"
Description="Output header/rep file to write to. ([rep-file/header-file])" />
<BoolProperty
Name="AlwaysClass"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Always Output Class Type"
Description="Always output 'class' type for .rep files and never 'POD'. (-c)"/>
<BoolProperty
Name="PrintDebug"
HelpUrl="https://doc.qt.io/qt-5/qtremoteobjects-repc.html"
DisplayName="Print Debug Information"
Description="Print out parsing debug information (for troubleshooting). (-d)"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtRepcBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRepcBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtRepcAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtRepcAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<EnumProperty
Name="DynamicSource"
DisplayName="Dynamic moc Source"
Description="Add output file to list of moc sources during build.">
<EnumValue
Name="moc_cpp"
DisplayName="Output moc header and moc-generated C++"
Description="Use output as dynamic moc source, and output of moc as dynamic C++ source."/>
<EnumValue
Name="moc"
DisplayName="Output moc header"
Description="Use output as dynamic moc source."/>
<EnumValue
Name="false"
DisplayName="Disable"
Description="Disable dynamic source."/>
</EnumProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
<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" Visible="false"/>
<StringListProperty Name="Define" Visible="false"/>
<StringListProperty Name="Undefine" Visible="false"/>
<!-- BEGIN Generated Text -->
<StringProperty Name="QtCppHeader_General" Category="RepcCpp" ReadOnly="true" DisplayName="########## General ##############################" />
<StringListProperty Subtype="folder" Name="AdditionalIncludeDirectories" DisplayName="Additional Include Directories" Description="(overrides C/C++ property) Specifies one or more directories to add to the include path; separate with semi-colons if more than one. (/I[path])" Category="RepcCpp" Switch="I" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalIncludeDirectories">
</StringListProperty>
<StringListProperty Subtype="folder" Name="AdditionalUsingDirectories" DisplayName="Additional #using Directories" Description="(overrides C/C++ property) Specifies one or more directories (separate directory names with a semicolon) to be searched to resolve names passed to a #using directive. (/AI[path])" Category="RepcCpp" Switch="AI" F1Keyword="VC.Project.VCCLCompilerTool.AdditionalUsingDirectories">
</StringListProperty>
<EnumProperty Name="DebugInformationFormat" DisplayName="Debug Information Format" Description="(overrides C/C++ property) Specifies the type of debugging information generated by the compiler. This requires compatible linker settings. (/Z7, /Zi, /ZI)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.DebugInformationFormat">
<EnumValue Name="None" Switch="" DisplayName="None" Description="Produces no debugging information, so compilation may be faster.">
</EnumValue>
<EnumValue Name="OldStyle" Switch="Z7" DisplayName="C7 compatible" Description="Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB).">
</EnumValue>
<EnumValue Name="ProgramDatabase" Switch="Zi" DisplayName="Program Database" Description="Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables, as well as functions and line numbers. ">
</EnumValue>
<EnumValue Name="EditAndContinue" Switch="ZI" DisplayName="Program Database for Edit And Continue" Description="Produces a program database, as described above, in a format that supports the Edit and Continue feature.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SupportJustMyCode" DisplayName="Support Just My Code Debugging" Description="(overrides C/C++ property) Adds supporting code for enabling Just My Code debugging in this compilation unit. (/JMC)" Category="RepcCpp" Switch="JMC" F1Keyword="VC.Project.VCCLCompilerTool.SupportJustMyCode">
</BoolProperty>
<EnumProperty Name="CompileAsManaged" DisplayName="Common Language RunTime Support" Description="(overrides C/C++ property) Use the .NET runtime service. This switch is incompatible with some other switches; see the documentation on the /clr family of switches for details." Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsManaged">
<EnumValue Name="false" Switch="" DisplayName="No Common Language RunTime Support" Description="No Common Language RunTime Support">
</EnumValue>
<EnumValue Name="true" Switch="clr" DisplayName="Common Language RunTime Support" Description="Creates metadata for your application that can be consumed by other CLR applications, and allows your application to consume types and data in the metadata of other CLR components.">
</EnumValue>
<EnumValue Name="Pure" Switch="clr:pure" DisplayName="Pure MSIL Common Language RunTime Support" Description="Produces an MSIL-only output file with no native executable code, although it can contain native types compiled to MSIL.">
</EnumValue>
<EnumValue Name="Safe" Switch="clr:safe" DisplayName="Safe MSIL Common Language RunTime Support" Description="Produces an MSIL-only (no native executable code) and verifiable output file.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="CompileAsWinRT" DisplayName="Consume Windows Runtime Extension" Description="(overrides C/C++ property) Consume the Windows Run Time languages extensions. (/ZW)" Category="RepcCpp" Switch="ZW" F1Keyword="VC.Project.VCCLCompilerTool.CompileAsWinRT">
</BoolProperty>
<BoolProperty Name="SuppressStartupBanner" DisplayName="Suppress Startup Banner" Description="(overrides C/C++ property) Suppresses the display of the sign-on banner when the compiler starts up and display of informational messages during compiling." Category="RepcCpp" Switch="nologo" F1Keyword="VC.Project.VCCLCompilerTool.SuppressStartupBanner">
</BoolProperty>
<EnumProperty Name="WarningLevel" DisplayName="Warning Level" Description="(overrides C/C++ property) Select how strict you want the compiler to be about code errors. (/W0 - /W4)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.WarningLevel">
<EnumValue Name="TurnOffAllWarnings" Switch="W0" DisplayName="Turn Off All Warnings" Description="Level 0 disables all warnings.">
</EnumValue>
<EnumValue Name="Level1" Switch="W1" DisplayName="Level1" Description="Level 1 displays severe warnings. Level 1 is the default warning level at the command line.">
</EnumValue>
<EnumValue Name="Level2" Switch="W2" DisplayName="Level2" Description="Level 2 displays all level 1 warnings and warnings less severe than level 1.">
</EnumValue>
<EnumValue Name="Level3" Switch="W3" DisplayName="Level3" Description="Level 3 displays all level 2 warnings and all other warnings recommended for production purposes.">
</EnumValue>
<EnumValue Name="Level4" Switch="W4" DisplayName="Level4" Description="Level 4 displays all level 3 warnings plus informational warnings, which in most cases can be safely ignored.">
</EnumValue>
<EnumValue Name="EnableAllWarnings" Switch="Wall" DisplayName="EnableAllWarnings" Description="Enables all warnings, including those disabled by default.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="WX-" Name="TreatWarningAsError" DisplayName="Treat Warnings As Errors" Description="(overrides C/C++ property) Treats all compiler warnings as errors. For a new project, it may be best to use /WX in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects." Category="RepcCpp" Switch="WX" F1Keyword="VC.Project.VCCLCompilerTool.WarnAsError">
</BoolProperty>
<StringProperty Name="WarningVersion" DisplayName="Warning Version" Description="(overrides C/C++ property) Hide warnings introduced after a specific version of the compiler. (/Wv:xx[.yy[.zzzzz]])" Category="RepcCpp" Switch="Wv:" F1Keyword="VC.Project.VCCLCompilerTool.WarningVersion">
</StringProperty>
<EnumProperty Name="DiagnosticsFormat" DisplayName="Diagnostics Format" Description="(overrides C/C++ property) Enables rich diagnostics, with column information and source context in diagnostic messages." Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.DiagnosticsFormat">
<EnumValue Name="Caret" Switch="diagnostics:caret" DisplayName="Caret" Description="Provides column information in the diagnostic message, as well as outputting the relevant line of source code with a caret indicating the offending column.">
</EnumValue>
<EnumValue Name="Column" Switch="diagnostics:column" DisplayName="Column Info" Description="Additionally provides the column number within the line where the diagnostic is issued, where applicable.">
</EnumValue>
<EnumValue Name="Classic" Switch="diagnostics:classic" DisplayName="Classic" Description="Retains the prior, concise diagnostic messages with the line number.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="sdl-" Name="SDLCheck" DisplayName="SDL checks" Description="(overrides C/C++ property) Additional Security Development Lifecycle (SDL) recommended checks; includes enabling additional secure code generation features and enables extra security-relevant warnings as errors. (/sdl, /sdl-)" Category="RepcCpp" Switch="sdl" F1Keyword="VC.Project.VCCLCompilerTool.SDLCheck">
</BoolProperty>
<BoolProperty Name="MultiProcessorCompilation" DisplayName="Multi-processor Compilation" Description="(overrides C/C++ property) Multi-processor Compilation." Category="RepcCpp" Switch="MP" F1Keyword="VC.Project.VCCLCompilerTool.MultiProcessorCompilation">
<Argument Property="ProcessorNumber" IsRequired="false" />
</BoolProperty>
<StringProperty Name="QtCppHeader_Optimization" Category="RepcCpp" ReadOnly="true" DisplayName="########## Optimization ##############################" />
<EnumProperty Name="Optimization" DisplayName="Optimization" Description="(overrides C/C++ property) Select option for code optimization; choose Custom to use specific optimization options. (/Od, /O1, /O2)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.Optimization">
<EnumValue Name="Custom" Switch="" DisplayName="Custom" Description="Custom optimization.">
</EnumValue>
<EnumValue Name="Disabled" Switch="Od" DisplayName="Disabled" Description="Disable optimization.">
</EnumValue>
<EnumValue Name="MinSpace" Switch="O1" DisplayName="Maximum Optimization (Favor Size)" Description="Equivalent to /Og /Os /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="MaxSpeed" Switch="O2" DisplayName="Maximum Optimization (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy">
</EnumValue>
<EnumValue Name="Full" Switch="Ox" DisplayName="Optimizations (Favor Speed)" Description="Equivalent to /Og /Oi /Ot /Oy /Ob2">
</EnumValue>
</EnumProperty>
<EnumProperty Name="InlineFunctionExpansion" DisplayName="Inline Function Expansion" Description="(overrides C/C++ property) Select the level of inline function expansion for the build. (/Ob1, /Ob2)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.InlineFunctionExpansion">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="Disabled" Switch="Ob0" DisplayName="Disabled" Description="Disables inline expansion, which is on by default.">
</EnumValue>
<EnumValue Name="OnlyExplicitInline" Switch="Ob1" DisplayName="Only __inline" Description="Expands only functions marked as inline, __inline, __forceinline or __inline or, in a C++ member function, defined within a class declaration.">
</EnumValue>
<EnumValue Name="AnySuitable" Switch="Ob2" DisplayName="Any Suitable" Description="Expands functions marked as inline or __inline and any other function that the compiler chooses (expansion occurs at the compiler's discretion, often referred to as auto-inlining).">
</EnumValue>
</EnumProperty>
<BoolProperty Name="IntrinsicFunctions" DisplayName="Enable Intrinsic Functions" Description="(overrides C/C++ property) Enables intrinsic functions. Using intrinsic functions generates faster, but possibly larger, code. (/Oi)" Category="RepcCpp" Switch="Oi" F1Keyword="VC.Project.VCCLCompilerTool.EnableIntrinsicFunctions">
</BoolProperty>
<EnumProperty Name="FavorSizeOrSpeed" DisplayName="Favor Size Or Speed" Description="(overrides C/C++ property) Whether to favor code size or code speed; 'Global Optimization' must be turned on. (/Ot, /Os)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.FavorSizeOrSpeed">
<EnumValue Name="Size" Switch="Os" DisplayName="Favor small code" Description="Favor Small Code. Minimizes the size of EXEs and DLLs by instructing the compiler to favor size over speed.">
</EnumValue>
<EnumValue Name="Speed" Switch="Ot" DisplayName="Favor fast code" Description="Favor Fast Code. Maximizes the speed of EXEs and DLLs by instructing the compiler to favor speed over size. (This is the default.) ">
</EnumValue>
<EnumValue Name="Neither" Switch="" DisplayName="Neither" Description="No size nor speed optimization.">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Oy-" Name="OmitFramePointers" DisplayName="Omit Frame Pointers" Description="(overrides C/C++ property) Suppresses creation of frame pointers on the call stack." Category="RepcCpp" Switch="Oy" F1Keyword="VC.Project.VCCLCompilerTool.OmitFramePointers">
</BoolProperty>
<BoolProperty Name="EnableFiberSafeOptimizations" DisplayName="Enable Fiber-Safe Optimizations" Description="(overrides C/C++ property) Enables memory space optimization when using fibers and thread local storage access. (/GT)" Category="RepcCpp" Switch="GT" F1Keyword="VC.Project.VCCLCompilerTool.EnableFiberSafeOptimizations">
</BoolProperty>
<BoolProperty Name="WholeProgramOptimization" DisplayName="Whole Program Optimization" Description="(overrides C/C++ property) Enables cross-module optimizations by delaying code generation to link time; requires that linker option 'Link Time Code Generation' be turned on. (/GL)" Category="RepcCpp" Switch="GL" F1Keyword="VC.Project.VCCLWCECompilerTool.WholeProgramOptimization">
</BoolProperty>
<StringProperty Name="QtCppHeader_Preprocessor" Category="RepcCpp" ReadOnly="true" DisplayName="########## Preprocessor ##############################" />
<StringListProperty Name="PreprocessorDefinitions" DisplayName="Preprocessor Definitions" Description="(overrides C/C++ property) Defines a preprocessing symbols for your source file." Category="RepcCpp" Switch="D " F1Keyword="VC.Project.VCCLCompilerTool.PreprocessorDefinitions">
</StringListProperty>
<StringListProperty Name="UndefinePreprocessorDefinitions" DisplayName="Undefine Preprocessor Definitions" Description="(overrides C/C++ property) Specifies one or more preprocessor undefines. (/U[macro])" Category="RepcCpp" Switch="U" F1Keyword="VC.Project.VCCLCompilerTool.UndefinePreprocessorDefinitions">
</StringListProperty>
<BoolProperty Name="UndefineAllPreprocessorDefinitions" DisplayName="Undefine All Preprocessor Definitions" Description="(overrides C/C++ property) Undefine all previously defined preprocessor values. (/u)" Category="RepcCpp" Switch="u" F1Keyword="VC.Project.VCCLCompilerTool.UndefineAllPreprocessorDefinitions">
</BoolProperty>
<BoolProperty Name="IgnoreStandardIncludePath" DisplayName="Ignore Standard Include Paths" Description="(overrides C/C++ property) Prevents the compiler from searching for include files in directories specified in the INCLUDE environment variables." Category="RepcCpp" Switch="X" F1Keyword="VC.Project.VCCLCompilerTool.IgnoreStandardIncludePath">
</BoolProperty>
<BoolProperty Name="PreprocessToFile" DisplayName="Preprocess to a File" Description="(overrides C/C++ property) Preprocesses C and C++ source files and writes the preprocessed output to a file. This option suppresses compilation, thus it does not produce an .obj file." Category="RepcCpp" Switch="P" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFile">
</BoolProperty>
<BoolProperty Name="PreprocessSuppressLineNumbers" DisplayName="Preprocess Suppress Line Numbers" Description="(overrides C/C++ property) Preprocess without #line directives." Category="RepcCpp" Switch="EP" F1Keyword="VC.Project.VCCLCompilerTool.GeneratePreprocessedFileNoLines">
</BoolProperty>
<BoolProperty Name="PreprocessKeepComments" DisplayName="Keep Comments" Description="(overrides C/C++ property) Suppresses comment strip from source code; requires that one of the 'Preprocessing' options be set. (/C)" Category="RepcCpp" Switch="C" F1Keyword="VC.Project.VCCLCompilerTool.KeepComments">
</BoolProperty>
<StringProperty Name="QtCppHeader_Code_Generation" Category="RepcCpp" ReadOnly="true" DisplayName="########## Code Generation ##############################" />
<BoolProperty ReverseSwitch="GF-" Name="StringPooling" DisplayName="Enable String Pooling" Description="(overrides C/C++ property) Enables the compiler to create a single read-only copy of identical strings in the program image and in memory during execution, resulting in smaller programs, an optimization called string pooling. /O1, /O2, and /ZI automatically set /GF option. " Category="RepcCpp" Switch="GF" F1Keyword="VC.Project.VCCLCompilerTool.StringPooling">
</BoolProperty>
<BoolProperty ReverseSwitch="Gm-" Name="MinimalRebuild" DisplayName="Enable Minimal Rebuild" Description="(overrides C/C++ property) Enables minimal rebuild, which determines whether C++ source files that include changed C++ class definitions (stored in header (.h) files) need to be recompiled." Category="RepcCpp" Switch="Gm" F1Keyword="VC.Project.VCCLCompilerTool.MinimalRebuild">
</BoolProperty>
<EnumProperty Name="ExceptionHandling" DisplayName="Enable C++ Exceptions" Description="(overrides C/C++ property) Specifies the model of exception handling to be used by the compiler." Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.ExceptionHandling">
<EnumValue Name="Async" Switch="EHa" DisplayName="Yes with SEH Exceptions" Description="The exception-handling model that catches asynchronous (structured) and synchronous (C++) exceptions. (/EHa)">
</EnumValue>
<EnumValue Name="Sync" Switch="EHsc" DisplayName="Yes" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions never throw a C++ exception. (/EHsc)">
</EnumValue>
<EnumValue Name="SyncCThrow" Switch="EHs" DisplayName="Yes with Extern C functions" Description="The exception-handling model that catches C++ exceptions only and tells the compiler to assume that extern C functions do throw an exception. (/EHs)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No" Description="No exception handling.">
</EnumValue>
</EnumProperty>
<BoolProperty Name="SmallerTypeCheck" DisplayName="Smaller Type Check" Description="(overrides C/C++ property) Enable checking for conversion to smaller types, incompatible with any optimization type other than debug. (/RTCc)" Category="RepcCpp" Switch="RTCc" F1Keyword="VC.Project.VCCLCompilerTool.SmallerTypeCheck">
</BoolProperty>
<EnumProperty Name="BasicRuntimeChecks" DisplayName="Basic Runtime Checks" Description="(overrides C/C++ property) Perform basic runtime error checks, incompatible with any optimization type other than debug. (/RTCs, /RTCu, /RTC1)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.BasicRuntimeChecks">
<EnumValue Name="StackFrameRuntimeCheck" Switch="RTCs" DisplayName="Stack Frames" Description="Enables stack frame run-time error checking.">
</EnumValue>
<EnumValue Name="UninitializedLocalUsageCheck" Switch="RTCu" DisplayName="Uninitialized variables" Description="Reports when a variable is used without having been initialized.">
</EnumValue>
<EnumValue Name="EnableFastChecks" Switch="RTC1" DisplayName="Both (/RTC1, equiv. to /RTCsu)" Description="Equivalent of /RTCsu.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default runtime checks.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="RuntimeLibrary" DisplayName="Runtime Library" Description="(overrides C/C++ property) Specify runtime library for linking. (/MT, /MTd, /MD, /MDd)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeLibrary">
<EnumValue Name="MultiThreaded" Switch="MT" DisplayName="Multi-threaded" Description="Causes your application to use the multithread, static version of the run-time library.">
</EnumValue>
<EnumValue Name="MultiThreadedDebug" Switch="MTd" DisplayName="Multi-threaded Debug" Description="Defines _DEBUG and _MT. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols.">
</EnumValue>
<EnumValue Name="MultiThreadedDLL" Switch="MD" DisplayName="Multi-threaded DLL" Description="Causes your application to use the multithread- and DLL-specific version of the run-time library. Defines _MT and _DLL and causes the compiler to place the library name MSVCRT.lib into the .obj file.">
</EnumValue>
<EnumValue Name="MultiThreadedDebugDLL" Switch="MDd" DisplayName="Multi-threaded Debug DLL" Description="Defines _DEBUG, _MT, and _DLL and causes your application to use the debug multithread- and DLL-specific version of the run-time library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="StructMemberAlignment" DisplayName="Struct Member Alignment" Description="(overrides C/C++ property) Specifies 1, 2, 4, or 8-byte boundaries for struct member alignment. (/Zp[num])" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.StructMemberAlignment">
<EnumValue Name="1Byte" Switch="Zp1" DisplayName="1 Byte" Description="Packs structures on 1-byte boundaries. Same as /Zp.">
</EnumValue>
<EnumValue Name="2Bytes" Switch="Zp2" DisplayName="2 Bytes" Description="Packs structures on 2-byte boundaries.">
</EnumValue>
<EnumValue Name="4Bytes" Switch="Zp4" DisplayName="4 Byte" Description="Packs structures on 4-byte boundaries.">
</EnumValue>
<EnumValue Name="8Bytes" Switch="Zp8" DisplayName="8 Bytes" Description="Packs structures on 8-byte boundaries (default).">
</EnumValue>
<EnumValue Name="16Bytes" Switch="Zp16" DisplayName="16 Bytes" Description="Packs structures on 16-byte boundaries.">
</EnumValue>
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default alignment settings.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="BufferSecurityCheck" DisplayName="Security Check" Description="(overrides C/C++ property) The Security Check helps detect stack-buffer over-runs, a common attempted attack upon a program's security. . (/GS-, /GS)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.BufferSecurityCheck">
<EnumValue Name="false" Switch="GS-" DisplayName="Disable Security Check" Description="Disable Security Check. (/GS-)">
</EnumValue>
<EnumValue Name="true" Switch="GS" DisplayName="Enable Security Check" Description="Enable Security Check. (/GS)">
</EnumValue>
</EnumProperty>
<EnumProperty Name="ControlFlowGuard" DisplayName="Control Flow Guard" Description="(overrides C/C++ property) Guard security check helps detect attempts to dispatch to illegal block of code. (/guard:cf)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.ControlFlowGuard">
<EnumValue Name="Guard" Switch="guard:cf" DisplayName="Yes" Description="Enable Security Check with Guard (/guard:cf)">
</EnumValue>
<EnumValue Name="false" Switch="" DisplayName="No">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="Gy-" Name="FunctionLevelLinking" DisplayName="Enable Function-Level Linking" Description="(overrides C/C++ property) Allows the compiler to package individual functions in the form of packaged functions (COMDATs). Required for edit and continue to work. (/Gy)" Category="RepcCpp" Switch="Gy" F1Keyword="VC.Project.VCCLCompilerTool.EnableFunctionLevelLinking">
</BoolProperty>
<BoolProperty ReverseSwitch="Qpar-" Name="EnableParallelCodeGeneration" DisplayName="Enable Parallel Code Generation" Description="(overrides C/C++ property) Allows the compiler to generate parallel code for loops identified using #pragma loop(hint_parallel[(n)]) when optimization is enabled." Category="RepcCpp" Switch="Qpar" F1Keyword="VC.Project.VCCLCompilerTool.EnableParallelCodeGeneration">
</BoolProperty>
<EnumProperty Name="EnableEnhancedInstructionSet" DisplayName="Enable Enhanced Instruction Set" Description="(overrides C/C++ property) Enable use of instructions found on processors that support enhanced instruction sets, e.g., the SSE, SSE2, AVX, AVX2 and AVX-512 enhancements to IA-32; AVX, AVX2 and AVX-512 to x64. Currently /arch:SSE and /arch:SSE2 are only available when building for the x86 architecture. If no option is specified, the compiler will use instructions found on processors that support SSE2. Use of enhanced instructions can be disabled with /arch:IA32. (/arch:SSE, /arch:SSE2, /arch:AVX, /arch:AVX2, /arch:AVX512, /arch:IA32)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.EnableEnhancedInstructionSet">
<EnumValue Name="StreamingSIMDExtensions" Switch="arch:SSE" DisplayName="Streaming SIMD Extensions" Description="Streaming SIMD Extensions. (/arch:SSE)">
</EnumValue>
<EnumValue Name="StreamingSIMDExtensions2" Switch="arch:SSE2" DisplayName="Streaming SIMD Extensions 2" Description="Streaming SIMD Extensions 2. (/arch:SSE2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions" Switch="arch:AVX" DisplayName="Advanced Vector Extensions" Description="Advanced Vector Extensions. (/arch:AVX)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions2" Switch="arch:AVX2" DisplayName="Advanced Vector Extensions 2" Description="Advanced Vector Extensions 2. (/arch:AVX2)">
</EnumValue>
<EnumValue Name="AdvancedVectorExtensions512" Switch="arch:AVX512" DisplayName="Advanced Vector Extensions 512" Description="Advanced Vector Extensions 512. (/arch:AVX512)">
</EnumValue>
<EnumValue Name="NoExtensions" Switch="arch:IA32" DisplayName="No Enhanced Instructions" Description="No Enhanced Instructions. (/arch:IA32)">
</EnumValue>
<EnumValue Name="NotSet" Switch="" DisplayName="Not Set" Description="Not Set.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="FloatingPointModel" DisplayName="Floating Point Model" Description="(overrides C/C++ property) Sets the floating point model. (/fp:precise, /fp:strict, /fp:fast)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.floatingPointModel">
<EnumValue Name="Precise" Switch="fp:precise" DisplayName="Precise" Description="Default. Improves the consistency of floating-point tests for equality and inequality.">
</EnumValue>
<EnumValue Name="Strict" Switch="fp:strict" DisplayName="Strict" Description="The strictest floating-point model. /fp:strict causes fp_contract to be OFF and fenv_access to be ON. /fp:except is implied and can be disabled by explicitly specifying /fp:except-. When used with /fp:except-, /fp:strict enforces strict floating-point semantics but without respect for exceptional events.">
</EnumValue>
<EnumValue Name="Fast" Switch="fp:fast" DisplayName="Fast" Description="Creates the fastest code in the majority of cases. ">
</EnumValue>
</EnumProperty>
<BoolProperty ReverseSwitch="fp:except-" Name="FloatingPointExceptions" DisplayName="Enable Floating Point Exceptions" Description="(overrides C/C++ property) Reliable floating-point exception model. Exceptions will be raised immediately after they are triggered. (/fp:except)" Category="RepcCpp" Switch="fp:except" F1Keyword="VC.Project.VCCLCompilerTool.FloatingPointExceptions">
</BoolProperty>
<BoolProperty Name="CreateHotpatchableImage" DisplayName="Create Hotpatchable Image" Description="(overrides C/C++ property) When hotpatching is on, the compiler ensures that first instruction of each function is two bytes, which is required for hot patching. (/hotpatch)" Category="RepcCpp" Switch="hotpatch" F1Keyword="VC.Project.VCCLCompilerTool.CreateHotpatchableImage">
</BoolProperty>
<StringProperty Name="QtCppHeader_Language" Category="RepcCpp" ReadOnly="true" DisplayName="########## Language ##############################" />
<BoolProperty Name="DisableLanguageExtensions" DisplayName="Disable Language Extensions" Description="(overrides C/C++ property) Suppresses or enables language extensions. (/Za)" Category="RepcCpp" Switch="Za" F1Keyword="VC.Project.VCCLCompilerTool.DisableLanguageExtensions">
</BoolProperty>
<BoolProperty Name="ConformanceMode" DisplayName="Conformance mode" Description="(overrides C/C++ property) Enables or suppresses conformance mode. (/permissive-)" Category="RepcCpp" Switch="permissive-" F1Keyword="VC.Project.VCCLCompilerTool.ConformanceMode">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:wchar_t-" Name="TreatWChar_tAsBuiltInType" DisplayName="Treat WChar_t As Built in Type" Description="(overrides C/C++ property) When specified, the type wchar_t becomes a native type that maps to __wchar_t in the same way that short maps to __int16. /Zc:wchar_t is on by default." Category="RepcCpp" Switch="Zc:wchar_t" F1Keyword="VC.Project.VCCLCompilerTool.TreatWChar_tAsBuiltInType">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:forScope-" Name="ForceConformanceInForLoopScope" DisplayName="Force Conformance in For Loop Scope" Description="(overrides C/C++ property) Used to implement standard C++ behavior for the for statement loops with Microsoft extensions (/Za, /Ze (Disable Language Extensions)). /Zc:forScope is on by default." Category="RepcCpp" Switch="Zc:forScope" F1Keyword="VC.Project.VCCLCompilerTool.ForceConformanceInForLoopScope">
</BoolProperty>
<BoolProperty Name="RemoveUnreferencedCodeData" DisplayName="Remove unreferenced code and data" Description="(overrides C/C++ property) When specified, compiler no longer generates symbol information for unreferenced code and data." Category="RepcCpp" Switch="Zc:inline" F1Keyword="VC.Project.VCCLCompilerTool.RemoveUnreferencedCodeData">
</BoolProperty>
<BoolProperty ReverseSwitch="Zc:rvalueCast-" Name="EnforceTypeConversionRules" DisplayName="Enforce type conversion rules" Description="(overrides C/C++ property) Used to identify an rvalue reference type as the result of a cast operation in accordance with the C++11 standard." Category="RepcCpp" Switch="Zc:rvalueCast" F1Keyword="VC.Project.VCCLCompilerTool.EnforceTypeConversionRules">
</BoolProperty>
<BoolProperty ReverseSwitch="GR-" Name="RuntimeTypeInfo" DisplayName="Enable Run-Time Type Information" Description="(overrides C/C++ property) Adds code for checking C++ object types at run time (runtime type information). (/GR, /GR-)" Category="RepcCpp" Switch="GR" F1Keyword="VC.Project.VCCLCompilerTool.RuntimeTypeInfo">
</BoolProperty>
<BoolProperty ReverseSwitch="openmp-" Name="OpenMPSupport" DisplayName="Open MP Support" Description="(overrides C/C++ property) Enable OpenMP 2.0 language extensions. (/openmp)" Category="RepcCpp" Switch="openmp" F1Keyword="VC.Project.VCCLCompilerTool.OpenMP">
</BoolProperty>
<EnumProperty Name="LanguageStandard" DisplayName="C++ Language Standard" Description="(overrides C/C++ property) Determines the C++ language standard the compiler will enforce. It is recommended to use the latest version when possible. (/std:c++14, /std:c++17, /std:c++latest)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.CppLanguageStandard">
<EnumValue Name="Default" Switch="" DisplayName="Default">
</EnumValue>
<EnumValue Name="stdcpp14" Switch="std:c++14" DisplayName="ISO C++14 Standard">
</EnumValue>
<EnumValue Name="stdcpp17" Switch="std:c++17" DisplayName="ISO C++17 Standard">
</EnumValue>
<EnumValue Name="stdcpplatest" Switch="std:c++latest" DisplayName="Preview - Features from the Latest C++ Working Draft">
</EnumValue>
</EnumProperty>
<BoolProperty Name="EnableModules" DisplayName="Enable C++ Modules (experimental)" Description="(overrides C/C++ property) Experimental support for the C++ Modules TS and Standard Library modules." Category="RepcCpp" Switch="experimental:module" F1Keyword="VC.Project.VCCLCompilerTool.ModulesSupport">
</BoolProperty>
<StringProperty Name="QtCppHeader_Precompiled_Headers" Category="RepcCpp" ReadOnly="true" DisplayName="########## Precompiled Headers ##############################" />
<EnumProperty Name="PrecompiledHeader" DisplayName="Precompiled Header" Description="(overrides C/C++ property) Create/Use Precompiled Header : Enables creation or use of a precompiled header during the build. (/Yc, /Yu)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.UsePrecompiledHeader">
<EnumValue Name="Create" Switch="Yc" DisplayName="Create" Description="Instructs the compiler to create a precompiled header (.pch) file that represents the state of compilation at a certain point.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="Use" Switch="Yu" DisplayName="Use" Description="Instructs the compiler to use an existing precompiled header (.pch) file in the current compilation.">
<Argument Property="PrecompiledHeaderFile" IsRequired="false" />
</EnumValue>
<EnumValue Name="NotUsing" Switch="" DisplayName="Not Using Precompiled Headers" Description="Not using precompiled headers. ">
</EnumValue>
</EnumProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderFile" DisplayName="Precompiled Header File" Description="(overrides C/C++ property) Specifies header file name to use when creating or using a precompiled header file. (/Yc[name], /Yu[name])" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderThrough">
</StringProperty>
<StringProperty Subtype="file" Name="PrecompiledHeaderOutputFile" DisplayName="Precompiled Header Output File" Description="(overrides C/C++ property) Specifies the path and/or name of the generated precompiled header file. (/Fp[name])" Category="RepcCpp" Switch="Fp" F1Keyword="VC.Project.VCCLCompilerTool.PrecompiledHeaderFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Output_Files" Category="RepcCpp" ReadOnly="true" DisplayName="########## Output Files ##############################" />
<BoolProperty Name="ExpandAttributedSource" DisplayName="Expand Attributed Source" Description="(overrides C/C++ property) Create listing file with expanded attributes injected into source file. (/Fx)" Category="RepcCpp" Switch="Fx" F1Keyword="VC.Project.VCCLCompilerTool.ExpandAttributedSource">
</BoolProperty>
<EnumProperty Name="AssemblerOutput" DisplayName="Assembler Output" Description="(overrides C/C++ property) Specifies the contents of assembly language output file. (/FA, /FAc, /FAs, /FAcs)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerOutput">
<EnumValue Name="NoListing" Switch="" DisplayName="No Listing" Description="No listing. ">
</EnumValue>
<EnumValue Name="AssemblyCode" Switch="FA" DisplayName="Assembly-Only Listing" Description="Assembly code; .asm">
</EnumValue>
<EnumValue Name="AssemblyAndMachineCode" Switch="FAc" DisplayName="Assembly With Machine Code" Description="Machine and assembly code; .cod">
</EnumValue>
<EnumValue Name="AssemblyAndSourceCode" Switch="FAs" DisplayName="Assembly With Source Code" Description="Source and assembly code; .asm">
</EnumValue>
<EnumValue Name="All" Switch="FAcs" DisplayName="Assembly, Machine Code and Source" Description="Assembly, machine code and source code; .cod">
</EnumValue>
</EnumProperty>
<BoolProperty Name="UseUnicodeForAssemblerListing" DisplayName="Use Unicode For Assembler Listing" Description="(overrides C/C++ property) Causes the output file to be created in UTF-8 format. " Category="RepcCpp" Switch="FAu" F1Keyword="VC.Project.VCCLCompilerTool.UseUnicodeForAssemblerListing">
</BoolProperty>
<StringProperty Subtype="file" Name="AssemblerListingLocation" DisplayName="ASM List Location" Description="(overrides C/C++ property) Specifies relative path and/or name for ASM listing file; can be file or directory name. (/Fa[name])" Category="RepcCpp" Switch="Fa" F1Keyword="VC.Project.VCCLCompilerTool.AssemblerListingLocation">
</StringProperty>
<StringProperty Subtype="file" Name="ObjectFileName" DisplayName="Object File Name" Description="(overrides C/C++ property) Specifies a name to override the default object file name; can be file or directory name. (/Fo[name])" Category="RepcCpp" Switch="Fo" F1Keyword="VC.Project.VCCLCompilerTool.ObjectFile">
</StringProperty>
<StringProperty Subtype="file" Name="ProgramDataBaseFileName" DisplayName="Program Database File Name" Description="(overrides C/C++ property) Specifies a name for a compiler-generated PDB file; also specifies base name for the required compiler-generated IDB file; can be file or directory name. (/Fd[name])" Category="RepcCpp" Switch="Fd" F1Keyword="VC.Project.VCCLCompilerTool.ProgramDataBaseFileName">
</StringProperty>
<BoolProperty Name="GenerateXMLDocumentationFiles" DisplayName="Generate XML Documentation Files" Description="(overrides C/C++ property) Specifies that the compiler should generate XML documentation comment files (.XDC). (/doc)" Category="RepcCpp" Switch="doc" F1Keyword="VC.Project.VCCLCompilerTool.GenerateXMLDocumentationFiles">
<Argument Property="XMLDocumentationFileName" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="XMLDocumentationFileName" DisplayName="XML Documentation File Name" Description="(overrides C/C++ property) Specifies the name of the generated XML documentation files; can be file or directory name. (/doc[name])" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.XMLDocumentationFileName">
</StringProperty>
<StringProperty Name="QtCppHeader_Browse_Information" Category="RepcCpp" ReadOnly="true" DisplayName="########## Browse Information ##############################" />
<BoolProperty Name="BrowseInformation" DisplayName="Enable Browse Information" Description="(overrides C/C++ property) Enable Browse Information : Specifies level of browse information in .bsc file. (/FR)" Category="RepcCpp" Switch="FR" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformation">
<Argument Property="BrowseInformationFile" IsRequired="false" />
</BoolProperty>
<StringProperty Subtype="file" Name="BrowseInformationFile" DisplayName="Browse Information File" Description="(overrides C/C++ property) Browse File : Specifies optional name for browser information file. (/FR[name])" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.BrowseInformationFile">
</StringProperty>
<StringProperty Name="QtCppHeader_Advanced" Category="RepcCpp" ReadOnly="true" DisplayName="########## Advanced ##############################" />
<EnumProperty Name="CallingConvention" DisplayName="Calling Convention" Description="(overrides C/C++ property) Select the default calling convention for your application (can be overridden by function). (/Gd, /Gr, /Gz, /Gv)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.CallingConvention">
<EnumValue Name="Cdecl" Switch="Gd" DisplayName="__cdecl" Description="Specifies the __cdecl calling convention for all functions except C++ member functions and functions marked __stdcall or __fastcall.">
</EnumValue>
<EnumValue Name="FastCall" Switch="Gr" DisplayName="__fastcall" Description="Specifies the __fastcall calling convention for all functions except C++ member sfunctions and functions marked __cdecl or __stdcall. All __fastcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="StdCall" Switch="Gz" DisplayName="__stdcall" Description="Specifies the __stdcall calling convention for all functions except C++ member functions and functions marked __cdecl or __fastcall. All __stdcall functions must have prototypes.">
</EnumValue>
<EnumValue Name="VectorCall" Switch="Gv" DisplayName="__vectorcall" Description="Specifies the __vectorcall calling convention for all functions except C++ member functions and functions marked __cdecl, __fastcall, or __stdcall. All __vectorcall functions must have prototypes.">
</EnumValue>
</EnumProperty>
<EnumProperty Name="CompileAs" DisplayName="Compile As" Description="(overrides C/C++ property) Select compile language option for .c and .cpp files. (/TC, /TP)" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.CompileAs">
<EnumValue Name="Default" Switch="" DisplayName="Default" Description="Default.">
</EnumValue>
<EnumValue Name="CompileAsC" Switch="TC" DisplayName="Compile as C Code" Description="Compile as C Code.">
</EnumValue>
<EnumValue Name="CompileAsCpp" Switch="TP" DisplayName="Compile as C++ Code" Description="Compile as C++ Code.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="DisableSpecificWarnings" DisplayName="Disable Specific Warnings" Description="(overrides C/C++ property) Disable the desired warning numbers; put numbers in a semi-colon delimited list. (/wd[num])" Category="RepcCpp" Switch="wd" F1Keyword="VC.Project.VCCLCompilerTool.DisableSpecificWarnings">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedIncludeFiles" DisplayName="Forced Include File" Description="(overrides C/C++ property) one or more forced include files. (/FI[name])" Category="RepcCpp" Switch="FI" F1Keyword="VC.Project.VCCLCompilerTool.ForcedIncludeFiles">
</StringListProperty>
<StringListProperty Subtype="file" Name="ForcedUsingFiles" DisplayName="Forced #using File" Description="(overrides C/C++ property) Specifies one or more forced #using files. (/FU[name])" Category="RepcCpp" Switch="FU" F1Keyword="VC.Project.VCCLCompilerTool.ForcedUsingFiles">
</StringListProperty>
<BoolProperty Name="ShowIncludes" DisplayName="Show Includes" Description="(overrides C/C++ property) Generates a list of include files with compiler output. (/showIncludes)" Category="RepcCpp" Switch="showIncludes" F1Keyword="VC.Project.VCCLCompilerTool.ShowIncludes">
</BoolProperty>
<BoolProperty Name="UseFullPaths" DisplayName="Use Full Paths" Description="(overrides C/C++ property) Use full paths in diagnostic messages. (/FC)" Category="RepcCpp" Switch="FC" F1Keyword="VC.Project.VCCLCompilerTool.UseFullPaths">
</BoolProperty>
<BoolProperty Name="OmitDefaultLibName" DisplayName="Omit Default Library Name" Description="(overrides C/C++ property) Do not include default library names in .obj files. (/Zl)" Category="RepcCpp" Switch="Zl" F1Keyword="VC.Project.VCCLCompilerTool.OmitDefaultLibName">
</BoolProperty>
<EnumProperty Name="ErrorReporting" DisplayName="Internal Compiler Error Reporting" Description="(overrides C/C++ property) Specifies how internal tool errors should be reported back to Microsoft. The default in the IDE is prompt. The default from command line builds is queue. (/errorReport:[method])" Category="RepcCpp" F1Keyword="VC.Project.VCCLCompilerTool.ErrorReporting">
<EnumValue Name="None" Switch="errorReport:none" DisplayName="Do Not Send Report" Description="Reports about internal compiler errors will not be collected or sent to Microsoft.">
</EnumValue>
<EnumValue Name="Prompt" Switch="errorReport:prompt" DisplayName="Prompt Immediately" Description="Prompts you to send a report when you receive an internal compiler error.">
</EnumValue>
<EnumValue Name="Queue" Switch="errorReport:queue" DisplayName="Queue For Next Login" Description="Queues the error report. When you log in with administrator privileges, a pop-up window is displayed and allows you to report any failures since the last time you were logged in (you will not be prompted to send reports for failures more than once every three days). queue is the default when compiling an application at the command line.">
</EnumValue>
<EnumValue Name="Send" Switch="errorReport:send" DisplayName="Send Automatically" Description="Automatically sends reports of internal compiler errors to Microsoft. To enable this option, you must first agree to Microsoft%27s data collection policy. The first time you specify /errorReport:send on a computer, a compiler message will refer you to a website that contains Microsoft%27s data collection policy.">
</EnumValue>
</EnumProperty>
<StringListProperty Name="TreatSpecificWarningsAsErrors" DisplayName="Treat Specific Warnings As Errors" Description="(overrides C/C++ property) Treats the specific compiler warning as an error where n is a compiler warning." Category="RepcCpp" Switch="we" F1Keyword="VC.Project.VCCLCompilerTool.TreatSpecificWarningsAsErrors">
</StringListProperty>
<!-- END Generated Text -->
</Rule>
<ItemType
Name="QtRepc"
DisplayName="Qt Remote Objects Compiler (repc)" />
<FileExtension
Name="*.rep"
ContentType="QtRepc" />
<ContentType
Name="QtRepc"
DisplayName="Qt Remote Objects Compiler (repc)"
ItemType="QtRepc" />
</ProjectSchemaDefinitions>

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2021 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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qttranslation.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qttranslation.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2021 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild Translation property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeTranslation)' != ''"
Project="$(QtMsBuildProps_BeforeTranslation)"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Default values of Translation settings
// -->
<PropertyGroup>
<QtTranslationInput Condition="'$(QtTranslationInput)' == ''"
>@(ClCompile);@(ClInclude);@(QtMoc);@(QtUic)</QtTranslationInput>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtTranslation item template
// -->
<ItemDefinitionGroup>
<QtTranslation>
<BuildAction>false</BuildAction>
<!-- lupdate -->
<UpdateDescription>lupdate %(Identity)</UpdateDescription>
<UpdateAdditionalOptions>$(QtLUpdateOptions)</UpdateAdditionalOptions>
<SourceLanguage>default</SourceLanguage>
<TargetLanguage>default</TargetLanguage>
<NoObsolete>false</NoObsolete>
<PluralOnly>false</PluralOnly>
<UpdateSilent>false</UpdateSilent>
<NoSort>false</NoSort>
<Locations>false</Locations>
<NoUiLines>false</NoUiLines>
<DisableSameTextHeuristic>false</DisableSameTextHeuristic>
<DisableSimilarTextHeuristic>false</DisableSimilarTextHeuristic>
<DisableNumberHeuristic>false</DisableNumberHeuristic>
<!-- lrelease -->
<ReleaseDescription>lrelease %(Identity)</ReleaseDescription>
<QmOutputDir>$(OutDir)</QmOutputDir>
<QmOutputFile>%(Filename).qm</QmOutputFile>
<ReleaseAdditionalOptions>$(QtLReleaseOptions)</ReleaseAdditionalOptions>
<IdBased>false</IdBased>
<Compress>false</Compress>
<NoUnfinished>false</NoUnfinished>
<RemoveIdentical>false</RemoveIdentical>
<ReleaseSilent>false</ReleaseSilent>
</QtTranslation>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterTranslation)' != ''"
Project="$(QtMsBuildProps_AfterTranslation)"/>
</Project>

@ -0,0 +1,588 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2021 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Definitions specific to translation
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeTranslation)' != ''"
Project="$(QtMsBuildTargets_BeforeTranslation)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtDependsOn>$(QtDependsOn);QtTranslation</QtDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Build integration
// -->
<PropertyGroup>
<BuildDependsOn>
$(BuildDependsOn);
QtTranslation
</BuildDependsOn>
<CleanDependsOn>
$(CleanDependsOn);
QtTranslationClean
</CleanDependsOn>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup item type and property page
// -->
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qttranslation.xml" />
<AvailableItemName Include="QtTranslation">
<Targets>QtTranslation</Targets>
</AvailableItemName>
</ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslationPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Calculate paths to input and output files
// -->
<Target Name="QtTranslationPrepare">
<ItemGroup>
<QtTranslation Include="@(None)" Condition="'%(None.Extension)' == '.ts'" />
<QtTranslation>
<InputFiles
>$(QtTranslationInput)</InputFiles>
<LUpdate
>$(QtToolsPath)/lupdate</LUpdate>
<LRelease
>$(QtToolsPath)/lrelease</LRelease>
<TsFile
>%(Identity)</TsFile>
<QmFile
>$([System.IO.Path]::Combine('%(QmOutputDir)', '%(QmOutputFile)'))</QmFile>
<InputListFile
>$([System.IO.Path]::Combine('$(IntDir)', '%(Filename).in.txt'))</InputListFile>
</QtTranslation>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslationSelect
/////////////////////////////////////////////////////////////////////////////////////////////////
// Select files to include in build
// -->
<Target Name="QtTranslationSelect"
DependsOnTargets="QtTranslationPrepare">
<PropertyGroup>
<QtHasTranslation Condition="'@(QtTranslation)' != ''">true</QtHasTranslation>
</PropertyGroup>
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<ItemGroup Condition="'@(selected_files)' != ''">
<QtTranslation Remove="@(QtTranslation)" Condition="'%(Identity)' != '@(selected_files)'"/>
<QtTranslation>
<ForceRebuild>####### Don't skip this target #######</ForceRebuild>
</QtTranslation>
</ItemGroup>
<ItemGroup>
<QtTranslationUpdate
Include="@(QtTranslation)"
Condition="'$(QtTranslationForceUpdate)' == 'true'
OR $([System.String]::Copy('%(BuildAction)').Contains('lupdate'))">
<Force Condition="'$(QtTranslationForceUpdate)' == 'true'">true</Force>
</QtTranslationUpdate>
<QtTranslationRelease
Include="@(QtTranslation)"
Condition="'$(QtTranslationForceRelease)' == 'true'
OR $([System.String]::Copy('%(BuildAction)').Contains('lrelease'))">
<Force Condition="'$(QtTranslationForceRelease)' == 'true'">true</Force>
</QtTranslationRelease>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
<Delete
Condition="'%(QtTranslationUpdate.Force)' == 'true'"
Files="%(QtTranslationUpdate.InputListFile)"
TreatErrorsAsWarnings="true"/>
<Delete
Condition="'%(QtTranslationRelease.Force)' == 'true'"
Files="%(QtTranslationRelease.QmFile)"
TreatErrorsAsWarnings="true"/>
<Message Importance="high"
Condition="'$(SelectedFiles)' != ''
AND '$(QtHasTranslation)' == 'true'
AND '@(QtTranslationUpdate)' == ''
AND '@(QtTranslationRelease)' == ''"
Text="Translation disabled during build; skipping."/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslationUpdate
/////////////////////////////////////////////////////////////////////////////////////////////////
// Run lupdate on .ts files
// -->
<Target Name="QtTranslationUpdate"
DependsOnTargets="QtTranslationSelect"
Condition="'@(QtTranslationUpdate)' != ''"
Inputs="%(QtTranslationUpdate.InputFiles);
%(QtTranslationUpdate.InputListFile);
$(MSBuildProjectFile)"
Outputs="%(QtTranslationUpdate.TsFile);%(QtTranslationUpdate.ForceRebuild)">
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Flatten metadata: items => list of (item, metadata name, metadata value)
// -->
<Flatten Items="@(QtTranslationUpdate)"
Metadata="LUpdate;
TsFile;
QmFile;
InputListFile;
InputFiles;
IncludePath;
SourceLanguage;
TargetLanguage;
NoObsolete;
PluralOnly;
UpdateSilent;
NoSort;
Locations;
NoUiLines;
DisableSameTextHeuristic;
DisableSimilarTextHeuristic;
DisableNumberHeuristic;
FunctionAliases">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="TsFile;QmFile;InputListFile;InputFiles;IncludePath">
<Output
TaskParameter="Result" ItemName="Options" />
</HostTranslatePaths>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Sanitize paths
// -->
<ItemGroup>
<!-- Remove quotes from paths -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LUpdate'
OR '%(Name)' == 'InputFiles'
OR '%(Name)' == 'InputListFile'
OR '%(Name)' == 'IncludePath')"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</Options>
<!-- Escape trailing back-slash in paths with spaces -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LUpdate'
OR '%(Name)' == 'InputListFile'
OR '%(Name)' == 'IncludePath')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</Options>
<!-- Add quotes to paths with spaces -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LUpdate'
OR '%(Name)' == 'IncludePath')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</Options>
</ItemGroup>
<!--
//////////////////////////////////////////////////////////////////////////////////////////////
// Format lupdate command line arguments
// -->
<ItemGroup>
<Options>
<InputFiles Condition="'%(Name)' == 'InputFiles' AND Exists('%(Value)')"
>%(Value)</InputFiles>
</Options>
<Options>
<CmdExec Condition="'%(Name)' == 'LUpdate'"
>%(Value)</CmdExec>
</Options>
<Options>
<CmdOutput Condition="'%(Name)' == 'TsFile'"
>-ts %(Value)</CmdOutput>
<OutputFile Condition="'%(Name)' == 'TsFile'"
>%(Value)</OutputFile>
</Options>
<Options>
<CmdList Condition="'%(Name)' == 'InputListFile'"
>&quot;@%(Value)&quot;</CmdList>
<InputListFile Condition="'%(Name)' == 'InputListFile'"
>%(Value)</InputListFile>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'SourceLanguage' AND '%(Value)' != 'default'"
>-source-language %(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'TargetLanguage' AND '%(Value)' != 'default'"
>-target-language %(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'NoObsolete' AND '%(Value)' == 'true'"
>-no-obsolete</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'PluralOnly' AND '%(Value)' == 'true'"
>-pluralonly</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'UpdateSilent' AND '%(Value)' == 'true'"
>-silent</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'NoSort' AND '%(Value)' == 'true'"
>-no-sort</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'Locations' AND '%(Value)' == 'absolute'"
>-locations %(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'Locations' AND '%(Value)' == 'relative'"
>-locations %(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'Locations' AND '%(Value)' == 'none'"
>-locations %(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'NoUiLines' AND '%(Value)' == 'true'"
>-no-ui-lines</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'DisableSameTextHeuristic' AND '%(Value)' == 'true'"
>-disable-heuristic sametext</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'DisableSimilarTextHeuristic' AND '%(Value)' == 'true'"
>-disable-heuristic similartext</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'DisableNumberHeuristic' AND '%(Value)' == 'true'"
>-disable-heuristic number</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'IncludePath'"
>-I%(Value)</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'FunctionAliases'"
>-tr-function-alias %(Value)</CmdOption>
</Options>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Write list of input files
// -->
<WriteLinesToFile
Overwrite="true"
File="@(Options->'%(InputListFile)')"
Lines="@(Options->'%(InputFiles)')"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run lupdate
// -->
<PropertyGroup>
<!-- Generate command line -->
<Cmd>
@(Options->'%(CmdExec)', '')
@(Options->'%(CmdOption)', ' ')
@(QtTranslationUpdate->'%(UpdateAdditionalOptions)')
@(Options->'%(CmdList)', '')
@(Options->'%(CmdOutput)', '')
</Cmd>
<Cmd>$([System.Text.RegularExpressions.Regex]::Replace('$(Cmd)', '[\s\r\n]+', ' '))</Cmd>
<Cmd>$(Cmd.Trim())</Cmd>
</PropertyGroup>
<HostExec
Message="%(QtTranslationUpdate.UpdateDescription)"
Command="$(Cmd)"
Inputs="@(Options->'%(InputListFile)');@(Options->'%(InputFiles)')"
Outputs="@(Options->'%(OutputFile)')"
RemoteTarget="$(ResolvedRemoteTarget)"
RemoteProjectDir="$(_ResolvedRemoteProjectDir)">
</HostExec>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<Cmd/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<Options Remove="@(Options)"/>
<QtTranslationUpdate Remove="@(QtTranslationUpdate)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslationRelease
/////////////////////////////////////////////////////////////////////////////////////////////////
// Run lrelease on .ts files
// -->
<Target Name="QtTranslationRelease"
DependsOnTargets="QtTranslationSelect;
QtTranslationUpdate"
Condition="'@(QtTranslationRelease)' != ''"
Inputs="%(QtTranslationRelease.TsFile);
$(MSBuildProjectFile)"
Outputs="%(QtTranslationRelease.QmFile);
%(QtTranslationRelease.ForceRebuild)">
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Flatten metadata: items => list of (item, metadata name, metadata value)
// -->
<Flatten Items="@(QtTranslationRelease)"
Metadata="LRelease;
TsFile;
QmFile;
IdBased;
Compress;
NoUnfinished;
RemoveIdentical;
ReleaseSilent;
UntranslatedPrefix">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="LRelease;TsFile;QmFile">
<Output
TaskParameter="Result" ItemName="Options" />
</HostTranslatePaths>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Sanitize paths
// -->
<ItemGroup>
<!-- Remove quotes from paths -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LRelease')"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</Options>
<!-- Escape trailing back-slash in paths with spaces -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LRelease')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</Options>
<!-- Add quotes to paths with spaces -->
<Options>
<Value Condition="('%(Name)' == 'TsFile'
OR '%(Name)' == 'QmFile'
OR '%(Name)' == 'LRelease')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</Options>
</ItemGroup>
<!--
//////////////////////////////////////////////////////////////////////////////////////////////
// Format lrelease command line arguments
// -->
<ItemGroup>
<Options>
<CmdExec Condition="'%(Name)' == 'LRelease'"
>%(Value)</CmdExec>
</Options>
<Options>
<CmdInput Condition="'%(Name)' == 'TsFile'"
>%(Value)</CmdInput>
<InputFile Condition="'%(Name)' == 'TsFile'"
>%(Value)</InputFile>
</Options>
<Options>
<CmdOutput Condition="'%(Name)' == 'QmFile'"
>-qm %(Value)</CmdOutput>
<OutputFile Condition="'%(Name)' == 'QmFile'"
>%(Value)</OutputFile>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'IdBased' AND '%(Value)' == 'true'"
>-idbased</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'Compress' AND '%(Value)' == 'true'"
>-compress</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'NoUnfinished' AND '%(Value)' == 'true'"
>-nounfinished</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'RemoveIdentical' AND '%(Value)' == 'true'"
>-removeidentical</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'ReleaseSilent' AND '%(Value)' == 'true'"
>-silent</CmdOption>
</Options>
<Options>
<CmdOption Condition="'%(Name)' == 'UntranslatedPrefix'"
>-markuntranslated %(Value)</CmdOption>
</Options>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Run lrelease
// -->
<PropertyGroup>
<!-- Generate command line -->
<Cmd>
@(Options->'%(CmdExec)', '')
@(Options->'%(CmdOption)', ' ')
@(QtTranslationRelease->'%(ReleaseAdditionalOptions)')
@(Options->'%(CmdInput)', '')
@(Options->'%(CmdOutput)', '')
</Cmd>
<Cmd>$([System.Text.RegularExpressions.Regex]::Replace('$(Cmd)', '[\s\r\n]+', ' '))</Cmd>
<Cmd>$(Cmd.Trim())</Cmd>
</PropertyGroup>
<HostExec
Message="%(QtTranslationRelease.ReleaseDescription)"
Command="$(Cmd)"
Inputs="@(Options->'%(InputFile)')"
Outputs="@(Options->'%(OutputFile)')"
RemoteTarget="$(ResolvedRemoteTarget)"
RemoteProjectDir="$(_ResolvedRemoteProjectDir)">
</HostExec>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<Cmd/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<Options Remove="@(Options)"/>
<QtTranslationRelease Remove="@(QtTranslationRelease)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslation
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<Target Name="QtTranslation"
DependsOnTargets="$(QtTranslationDependsOn);
QtTranslationSelect;
QtTranslationUpdate;
QtTranslationRelease"
BeforeTargets="$(QtTranslationBeforeTargets)"
AfterTargets="Link;
$(QtTranslationAfterTargets)">
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<ItemGroup>
<QtTranslationUpdate Remove="@(QtTranslationUpdate)"/>
<QtTranslationRelease Remove="@(QtTranslationRelease)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtTranslationClean
/////////////////////////////////////////////////////////////////////////////////////////////////
//
// -->
<Target Name="QtTranslationClean"
DependsOnTargets="QtTranslationPrepare">
<Delete
Files="@(QtTranslation->'%(InputListFile)');@(QtTranslation->'%(QmFile)')"
TreatErrorsAsWarnings="true"/>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterTranslation)' != ''"
Project="$(QtMsBuildTargets_AfterTranslation)"/>
</Project>

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2021 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$
**
****************************************************************************/
-->
<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="QtRule_Translation"
PageTemplate="tool"
DisplayName="Qt Translation"
Order="9">
<Rule.DataSource>
<DataSource Persistence="ProjectFile" ItemType="QtTranslation" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="General"/>
<Category Name="Update" DisplayName="lupdate"/>
<Category Name="Release" DisplayName="lrelease"/>
</Rule.Categories>
<!-- General -->
<EnumProperty
Name="BuildAction" Category="General" DisplayName="Run Translation Tool During Build">
<EnumValue Name="false" DisplayName="Disabled"/>
<EnumValue Name="lupdate" DisplayName="lupdate"/>
<EnumValue Name="lrelease" DisplayName="lrelease"/>
<EnumValue Name="lupdate_lrelease" DisplayName="lupdate + lrelease"/>
</EnumProperty>
<!-- lupdate -->
<StringProperty
Name="UpdateDescription" Category="lupdate" DisplayName="Execution Description" />
<EnumProperty
Name="SourceLanguage" Category="lupdate" DisplayName="Source Language"
Description="Specify the language of the source strings for new files. -source-language &lt;language&gt;[_&lt;region&gt;]">
<EnumValue Name="default" DisplayName="POSIX"/>
</EnumProperty>
<EnumProperty
Name="TargetLanguage" Category="lupdate" DisplayName="Target Language"
Description="Specify the language of the translations for new files. -target-language &lt;language&gt;[_&lt;region&gt;]">
<EnumValue Name="default" DisplayName="Guess from file name"/>
</EnumProperty>
<BoolProperty
Name="NoObsolete" Category="lupdate" DisplayName="Drop Obsolete Strings"
Description="Drop all obsolete and vanished strings. -no-obsolete"/>
<BoolProperty
Name="PluralOnly" Category="lupdate" DisplayName="Plural Only"
Description="Only include plural form messages. -pluralonly"/>
<BoolProperty
Name="UpdateSilent" Category="lupdate" DisplayName="Silent"
Description="Do not explain what is being done. -silent"/>
<BoolProperty
Name="NoSort" Category="lupdate" DisplayName="Disable Sort"
Description="Do not sort contexts in TS files. -no-sort"/>
<EnumProperty
Name="Locations" Category="lupdate" DisplayName="Locations"
Description="Specify/override how source code references are saved in TS files. Default is absolute for new files. -locations {absolute|relative|none}">
<EnumValue Name="absolute" DisplayName="Absolute"/>
<EnumValue Name="relative" DisplayName="Relative"/>
<EnumValue Name="none" DisplayName="None"/>
<EnumValue Name="false" DisplayName="Guess from TS file"/>
</EnumProperty>
<BoolProperty
Name="NoUiLines" Category="lupdate" DisplayName="Disable UI Lines"
Description="Do not record line numbers in references to UI files. -no-ui-lines"/>
<BoolProperty
Name="DisableSameTextHeuristic" Category="lupdate" DisplayName="Disable Same Text Merge Heuristic"
Description="Disable the named merge heuristic. Can be specified multiple times. -disable-heuristic sametext"/>
<BoolProperty
Name="DisableSimilarTextHeuristic" Category="lupdate" DisplayName="Disable Similar Text Merge Heuristic"
Description="Disable the named merge heuristic. Can be specified multiple times. -disable-heuristic similartext"/>
<BoolProperty
Name="DisableNumberHeuristic" Category="lupdate" DisplayName="Disable Number Merge Heuristic"
Description="Disable the named merge heuristic. Can be specified multiple times. -disable-heuristic number"/>
<StringListProperty
Name="IncludePath" Category="lupdate" DisplayName="Include Path"
Description="Additional locations to look for include files. -I &lt;includepath&gt;"/>
<StringListProperty
Name="FunctionAliases" Category="lupdate" DisplayName="Function Aliases"
Description="With +=, recognize &lt;alias&gt; as an alternative spelling of &lt;function&gt;. With =, recognize &lt;alias&gt; as the only spelling of &lt;function&gt;. -tr-function-alias &lt;function&gt;{+=,=}&lt;alias&gt;[,&lt;function&gt;{+=,=}&lt;alias&gt;]..."/>
<StringProperty
Name="UpdateAdditionalOptions" Category="lupdate" DisplayName="AdditionalOptions"/>
<!-- lrelease -->
<StringProperty
Name="ReleaseDescription" Category="lrelease" DisplayName="Execution Description" />
<StringProperty
Name="QmOutputDir" Category="lrelease" DisplayName="Output Directory"
Description="Specifies the path of the generated QM output directory."/>
<StringProperty
Name="QmOutputFile" Category="lrelease" DisplayName="Output File Name"
Description="Specifies the name of the generated QM output file."/>
<BoolProperty
Name="IdBased" Category="lrelease" DisplayName="ID Based"
Description="Use IDs instead of source strings for message keying -idbased"/>
<BoolProperty
Name="Compress" Category="lrelease" DisplayName="Compress"
Description="Compress the QM files -compress"/>
<BoolProperty
Name="NoUnfinished" Category="lrelease" DisplayName="Skip Unfinished"
Description="Do not include unfinished translations -nounfinished"/>
<BoolProperty
Name="RemoveIdentical" Category="lrelease" DisplayName="Remove Identical"
Description="If the translated text is the same as the source text, do not include the message -removeidentical"/>
<BoolProperty
Name="ReleaseSilent" Category="lrelease" DisplayName="Silent"
Description="Do not explain what is being done -silent"/>
<StringProperty
Name="UntranslatedPrefix" Category="lrelease" DisplayName="Untranslated Prefix"
Description="If a message has no real translation, use the source text prefixed with the given string instead -markuntranslated &lt;prefix&gt;"/>
<StringProperty
Name="ReleaseAdditionalOptions" Category="lrelease" DisplayName="AdditionalOptions"/>
</Rule>
<ItemType
Name="QtTranslation"
DisplayName="Qt Translation File" />
<FileExtension
Name="*.ts"
ContentType="QtTranslation" />
<ContentType
Name="QtTranslation"
DisplayName="Qt Translation File"
ItemType="QtTranslation" />
</ProjectSchemaDefinitions>

@ -0,0 +1,46 @@
<?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$
**
****************************************************************************/
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild import
// -->
<PropertyGroup>
<QtMsBuildProps>
$(QtMsBuildProps);
$(MSBuildThisFileDirectory)qtuic.props
</QtMsBuildProps>
<QtMsBuildTargets>
$(QtMsBuildTargets);
$(MSBuildThisFileDirectory)qtuic.targets
</QtMsBuildTargets>
</PropertyGroup>
</Project>

@ -0,0 +1,82 @@
<?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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild uic property definitions
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildProps_BeforeUic)' != ''"
Project="$(QtMsBuildProps_BeforeUic)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// QtUic item template
// -->
<ItemDefinitionGroup>
<QtUic>
<ExecutionDescription>uic %(Identity)</ExecutionDescription>
<QTDIR Condition="'$(QtVsProjectSettings)' != 'true'"
>$(QTDIR)</QTDIR>
<QTDIR Condition="'$(QtVsProjectSettings)' == 'true'"
>$(QtInstallDir)</QTDIR>
<InputFile>%(FullPath)</InputFile>
<OutputFile Condition="'$(QtVsProjectSettings)' != 'true'"
>$(ProjectDir)GeneratedFiles\$(Configuration)\ui_%(Filename).h</OutputFile>
<QtUicDir Condition="'$(QtVsProjectSettings)' == 'true'"
>$(IntDir)uic\</QtUicDir>
<QtUicFileName Condition="'$(QtVsProjectSettings)' == 'true'"
>ui_%(Filename).h</QtUicFileName>
<ParallelProcess>true</ParallelProcess>
<CommandLineTemplate>[AllOptions] [AdditionalOptions]</CommandLineTemplate>
<Outputs>%(OutputFile)</Outputs>
</QtUic>
</ItemDefinitionGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildProps_AfterUic)' != ''"
Project="$(QtMsBuildProps_AfterUic)"/>
</Project>

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Definitions specific to uic
///////////////////////////////////////////////////////////////////////////////////////////////////
// -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import pre-requisites
// -->
<Import
Condition="'$(QtMsBuildTargets_BeforeUic)' != ''"
Project="$(QtMsBuildTargets_BeforeUic)"/>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Qt/MSBuild global properties
// -->
<PropertyGroup>
<QtBuildTargets>QtUic;$(QtBuildTargets)</QtBuildTargets>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Setup item type and property page
// -->
<Choose>
<When Condition="'$(QtVsProjectSettings)' == 'true' AND '$(QtVsProjectClProperties)' == 'true'">
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtuic_v3.xml" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'false'">
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)qtuic.xml" />
</ItemGroup>
</Otherwise>
</Choose>
<ItemGroup>
<AvailableItemName Include="QtUic">
<Targets>Qt</Targets>
</AvailableItemName>
</ItemGroup>
<PropertyGroup>
<QtUicRuleName>QtRule50_Uic</QtUicRuleName>
</PropertyGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtUicInit
/////////////////////////////////////////////////////////////////////////////////////////////////
// Initialize default metadata
// -->
<Target Name="QtUicInit">
<!--// Initialize %(OutputFile) -->
<ItemGroup Condition="'$(QtVsProjectSettings)' == 'true' AND '@(QtUic)' != ''">
<QtUicAux Include="@(QtUic)">
<OutputFile
>$([System.IO.Path]::Combine('%(QtUic.QtUicDir)','%(QtUic.QtUicFileName)'))</OutputFile>
</QtUicAux>
<QtUic Remove="@(QtUic)"/>
<QtUic Include="@(QtUicAux)"/>
<QtUicAux Remove="@(QtUicAux)"/>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Add uic output dir to C++ include path
// -->
<ItemGroup Condition="'@(QtUic)' != ''">
<QtIncludePath Include="$([System.IO.Path]::GetDirectoryName('%(QtUic.OutputFile)'))"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtUicPrepare
/////////////////////////////////////////////////////////////////////////////////////////////////
// Prepare to process sources
// -->
<Target Name="QtUicPrepare" DependsOnTargets="QtUicInit"
Inputs="%(QtUic.Identity)" Outputs="@(QtUic->'####### Don't skip this target #######')">
<ItemGroup>
<selected_files Include="$(SelectedFiles)"/>
</ItemGroup>
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtUicPrepare @(QtUic)"/>
<PropertyGroup>
<selected_files>[@(selected_files->'%(Identity)','][')]</selected_files>
<file>[@(QtUic->'%(Identity)')]</file>
<output_file>@(QtUic->'%(OutputFile)')</output_file>
<is_selected Condition="$(selected_files.Contains('$(file)'))">true</is_selected>
<is_selected Condition="!$(selected_files.Contains('$(file)'))">false</is_selected>
</PropertyGroup>
<!--// Delete output file to force build of source if it was manually selected to build
// (e.g. by the 'Compile' option in the context menu for the file) -->
<Delete Files="$(output_file)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' == 'true'" />
<!--// If a source was manually selected to build, remove all other sources -->
<ItemGroup Condition="'@(selected_files)' != ''">
<QtUic Remove="@(QtUic)"
Condition="'$(SelectedFiles)' != '' AND '$(is_selected)' != 'true'" />
</ItemGroup>
<!--// Remove sources excluded from build -->
<ItemGroup>
<QtUic Remove="@(QtUic)"
Condition="'$(SelectedFiles)' == '' AND '%(QtUic.ExcludedFromBuild)' == 'true'"/>
</ItemGroup>
<PropertyGroup>
<selected_files/>
<file/>
<output_file/>
<is_selected/>
</PropertyGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtUicSetModified
/////////////////////////////////////////////////////////////////////////////////////////////////
// Set InputChanged flag if source file or dependencies have been modified
// -->
<Target Name="QtUicSetModified" DependsOnTargets="QtUicPrepare"
Condition="'@(QtUic)' != ''"
Inputs="%(QtUic.FullPath);%(QtUic.AdditionalDependencies)" Outputs="@(QtUic->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'"
Text="## QtUicSetModified @(QtUic)" />
<CreateProperty Value="true">
<!-- // Using ValueSetByTask ensures $(input_changed) is only set to 'true' when the target
// is actually executed and not when MSBuild is figuring out which targets to run -->
<Output TaskParameter="ValueSetByTask" PropertyName="input_changed" />
</CreateProperty>
<ItemGroup>
<QtUic>
<InputChanged>$(input_changed)</InputChanged>
</QtUic>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
/// TARGET QtUic
/////////////////////////////////////////////////////////////////////////////////////////////////
// Process each source file and produce the corresponding QtWork items
// -->
<PropertyGroup>
<QtUicDependsOn>
QtPrepare;
QtUicPrepare;
QtUicSetModified;
$(QtUicDependsOn)
</QtUicDependsOn>
</PropertyGroup>
<Target Name="QtUic"
DependsOnTargets="$(QtUicDependsOn)"
BeforeTargets="$(QtUicBeforeTargets)" AfterTargets="$(QtUicAfterTargets)"
Condition="'@(QtUic)' != ''"
Inputs="%(QtUic.FullPath);%(QtUic.AdditionalDependencies);$(MSBuildProjectFile)"
Outputs="@(QtUic->'%(OutputFile)')">
<Message Importance="High" Condition="'$(QtDebug)' == 'true'" Text="## QtUic @(QtUic)" />
<CreateProperty Value="true">
<Output TaskParameter="ValueSetByTask" PropertyName="dependencies_changed" />
</CreateProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Convert string lists in source item properties to lists of items
// -->
<Flatten Items="@(QtUic)"
Metadata="InputFile;
OutputFile;
DisplayDependencies;
NoProtection;
NoImplicitIncludes;
Postfix;
Translate;
Include;
Generator;
IdBased">
<Output
TaskParameter="Result" ItemName="LocalOptions" />
</Flatten>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Translate local paths to build host paths
// -->
<HostTranslatePaths
Items="@(LocalOptions)"
Names="InputFile;
OutputFile;
Include">
<Output
TaskParameter="Result" ItemName="options" />
</HostTranslatePaths>
<ItemGroup>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////
// Remove quotes from all paths
// Escape trailing back-slash in paths
// Add quotes to paths containing spaces
// -->
<options>
<Value Condition="'%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'Include'"
>$([System.String]::Copy('%(Value)').Replace('&quot;', ''))</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'Include')
AND $([System.String]::Copy('%(Value)').Contains(' '))
AND $([System.String]::Copy('%(Value)').EndsWith('\'))"
>%(Value)\</Value>
</options>
<options>
<Value Condition="('%(Name)' == 'InputFile' OR '%(Name)' == 'OutputFile'
OR '%(Name)' == 'Include')
AND $([System.String]::Copy('%(Value)').Contains(' '))"
>&quot;%(Value)&quot;</Value>
</options>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Generate tool command line arguments
// -->
<!--// [uifile] Input file (*.ui) -->
<options>
<Value Condition="'%(Name)' == 'InputFile'">%(Value)</Value>
</options>
<!--// -o, -output <file> Place the output into <file> -->
<options>
<Value Condition="'%(Name)' == 'OutputFile'">-o %(Value)</Value>
</options>
<!--// -d, -dependencies Display the dependencies -->
<options>
<Value Condition="'%(Name)' == 'DisplayDependencies' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'DisplayDependencies' AND '%(Value)' == 'true'"
>--dependencies</Value>
</options>
<!--// -p, -no-protection Disable header protection -->
<options>
<Value Condition="'%(Name)' == 'NoProtection' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoProtection' AND '%(Value)' == 'true'"
>--no-protection</Value>
</options>
<!--// -n, -no-implicit-includes Disable generation of #include-directives -->
<options>
<Value Condition="'%(Name)' == 'NoImplicitIncludes' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'NoImplicitIncludes' AND '%(Value)' == 'true'"
>--no-implicit-includes</Value>
</options>
<!--// -postfix <postfix> Postfix to add to all generated classnames -->
<options>
<Value Condition="'%(Name)' == 'Postfix'">--postfix %(Value)</Value>
</options>
<!--// -tr, -translate <function> Use <function> for i18n -->
<options>
<Value Condition="'%(Name)' == 'Translate'">--tr %(Value)</Value>
</options>
<!--// -include <include-file> Add #include <include-file> to <file> -->
<options>
<Value Condition="'%(Name)' == 'Include'">--include %(Value)</Value>
</options>
<!--// -g, -generator <java|cpp> Select generator -->
<options>
<Value Condition="'%(Name)' == 'Generator'">-g %(Value)</Value>
</options>
<!--// -idbased Use id based function for i18n -->
<options>
<Value Condition="'%(Name)' == 'IdBased' AND '%(Value)' != 'true'"></Value>
</options>
<options>
<Value Condition="'%(Name)' == 'IdBased' AND '%(Value)' == 'true'">--idbased</Value>
</options>
</ItemGroup>
<PropertyGroup>
<options>@(options->'%(Value)', ' ')</options>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Aux properties
// -->
<PropertyGroup>
<!--// Force modified flag if source was manually selected to build -->
<input_changed Condition="'$(SelectedFiles)' != ''"
>true</input_changed>
<input_changed Condition="'$(SelectedFiles)' == ''"
>%(QtUic.InputChanged)</input_changed>
<!--// Run work in parallel processes -->
<run_parallel Condition="'@(QtUic)' != ''
AND '%(QtUic.ParallelProcess)' == 'true'
AND '$(SelectedFiles)' == ''"
>true</run_parallel>
<!--// Run work in single process -->
<run_single Condition="'@(QtUic)' != ''
AND ('%(QtUic.ParallelProcess)' != 'true'
OR '$(SelectedFiles)' != '')"
>true</run_single>
</PropertyGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Create work item
// -->
<ItemGroup Condition="'$(run_parallel)' == 'true' OR '$(run_single)' == 'true'">
<QtWork Include="@(QtUic)">
<WorkType>uic</WorkType>
<ToolPath Condition="'$(QtVsProjectSettings)' == 'true'">$(QtToolsPath)/uic</ToolPath>
<ToolPath Condition="'$(QtVsProjectSettings)' != 'true'">%(QtUic.QTDIR)\bin\uic.exe</ToolPath>
<Options>$(options)</Options>
<Message>%(QtUic.ExecutionDescription)</Message>
<DependenciesChanged>$(dependencies_changed)</DependenciesChanged>
<InputChanged>$(input_changed)</InputChanged>
<ParallelBuild Condition="'$(run_parallel)' == 'true'">true</ParallelBuild>
<ParallelBuild Condition="'$(run_single)' == 'true'">false</ParallelBuild>
</QtWork>
</ItemGroup>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////
// Clean-up
// -->
<PropertyGroup>
<options/>
<dependencies_changed/>
<input_changed/>
<run_parallel/>
<run_single/>
</PropertyGroup>
<ItemGroup>
<LocalOptions Remove="@(LocalOptions)"/>
<options Remove="@(options)"/>
<selected_files Remove="@(selected_files)"/>
</ItemGroup>
</Target>
<!--
/////////////////////////////////////////////////////////////////////////////////////////////////
// Import dependants
// -->
<Import
Condition="'$(QtMsBuildTargets_AfterUic)' != ''"
Project="$(QtMsBuildTargets_AfterUic)"/>
</Project>

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/****************************************************************************
**
** Copyright (C) 2018 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$
**
****************************************************************************/
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
// Defines the fields included in the uic property page, as well as any
// other metadata associated to QtUic items
// -->
<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="QtRule50_Uic"
PageTemplate="tool"
DisplayName="Qt User Interface Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtUic" />
</Rule.DataSource>
<Rule.Categories>
<Category
Name="General">
<Category.DisplayName>
<sys:String>uic.exe</sys:String>
</Category.DisplayName>
</Category>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtUic"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False" />
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Description="Path to installation of Qt."/>
<StringProperty
Name="QtUicDir"
DisplayName="Output Directory"
Description="Specifies the path of the generated uic output directory."
Visible="false"/>
<StringProperty
Name="QtUicFileName"
DisplayName="Output File Name"
Description="Specifies the name of the generated uic output file."
Visible="false"/>
<StringProperty
Name="InputFile"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Input File"
Description="Specifies the full path of the input file. (&lt;file&gt;)"
Switch="&quot;[value]&quot;" />
<StringProperty
Name="OutputFile"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Output File"
Description="Specifies the full path of the output file. (-o &lt;file&gt;)"
Switch="-o &quot;[value]&quot;" />
<BoolProperty
Name="DisplayDependencies"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Display Dependencies"
Description="Display the dependencies. (--dependencies)"
Switch="--dependencies"/>
<BoolProperty
Name="NoProtection"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="No Protection"
Description="Disable header protection. (--no-protection)"
Switch="--no-protection"/>
<BoolProperty
Name="NoImplicitIncludes"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="No Implicit Includes"
Description="Disable generation of #include-directives. (--no-implicit-includes)"
Switch="--no-implicit-includes"/>
<StringProperty
Name="Postfix"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Postfix"
Description="&lt;postfix&gt; to add to all generated classnames. (--postfix &lt;postfix&gt;)"
Switch="--postfix [value]"/>
<StringProperty
Name="Translate"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Translate"
Description="Use &lt;function&gt; for i18n. (--tr &lt;function&gt;)"
Switch="--tr [value]" />
<StringProperty
Name="Include"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Include"
Description="Add #include &lt;file&gt; to the output. (--include &lt;file&gt;)"
Switch="--include &quot;[value]&quot;" />
<StringProperty
Name="Generator"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Generator"
Description="Select generator. (-g &lt;java|cpp&gt;)"
Switch="-g [value]" />
<BoolProperty
Name="IdBased"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="ID Based"
Description="Use id based function for i18n. (--idbased)"
Switch="--idbased"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtUicBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtUicBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtUicAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtUicAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
</Rule>
<ItemType
Name="QtUic"
DisplayName="Qt User Interface Compiler (uic)" />
<FileExtension
Name="*.ui"
ContentType="QtUic" />
<ContentType
Name="QtUic"
DisplayName="Qt User Interface Compiler (uic)"
ItemType="QtUic" />
</ProjectSchemaDefinitions>

@ -0,0 +1,218 @@
<?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$
**
****************************************************************************/
-->
<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="QtRule50_Uic"
PageTemplate="tool"
DisplayName="Qt User Interface Compiler"
Order="9">
<Rule.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtUic" />
</Rule.DataSource>
<Rule.Categories>
<Category Name="General" DisplayName="uic"/>
</Rule.Categories>
<StringListProperty
Name="Inputs"
Category="General"
IsRequired="true"
Visible="False">
<StringListProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType="QtUic"
SourceType="Item" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty
Name="ExecutionDescription"
DisplayName="Execution Description"
IncludeInCommandLine="False" />
<StringProperty
Name="QtUicDir"
DisplayName="Output Directory"
Description="Specifies the path of the generated uic output directory."/>
<StringProperty
Name="QtUicFileName"
DisplayName="Output File Name"
Description="Specifies the name of the generated uic output file."/>
<StringProperty
Name="QTDIR"
DisplayName="Qt Directory"
Visible="false"/>
<StringProperty
Name="InputFile"
DisplayName="Input File"
Visible="false"/>
<StringProperty
Name="OutputFile"
DisplayName="Output File"
Visible="false"/>
<BoolProperty
Name="DisplayDependencies"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Display Dependencies"
Description="Display the dependencies. (--dependencies)"
Switch="--dependencies"/>
<BoolProperty
Name="NoProtection"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="No Protection"
Description="Disable header protection. (--no-protection)"
Switch="--no-protection"/>
<BoolProperty
Name="NoImplicitIncludes"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="No Implicit Includes"
Description="Disable generation of #include-directives. (--no-implicit-includes)"
Switch="--no-implicit-includes"/>
<StringProperty
Name="Postfix"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Postfix"
Description="&lt;postfix&gt; to add to all generated classnames. (--postfix &lt;postfix&gt;)"
Switch="--postfix [value]"/>
<StringProperty
Name="Translate"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Translate"
Description="Use &lt;function&gt; for i18n. (--tr &lt;function&gt;)"
Switch="--tr [value]" />
<StringProperty
Name="Include"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Include"
Description="Add #include &lt;file&gt; to the output. (--include &lt;file&gt;)"
Switch="--include &quot;[value]&quot;" />
<StringProperty
Name="Generator"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="Generator"
Description="Select generator. (-g &lt;java|cpp&gt;)"
Switch="-g [value]" />
<BoolProperty
Name="IdBased"
HelpUrl="http://doc.qt.io/qt-5/uic.html"
DisplayName="ID Based"
Description="Use id based function for i18n. (--idbased)"
Switch="--idbased"/>
<StringProperty
Name="CommandLineTemplate"
DisplayName="Command Line"
Visible="False"
IncludeInCommandLine="False" />
<DynamicEnumProperty
Name="QtUicBeforeTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute Before</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run before.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtUicBeforeTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<DynamicEnumProperty
Name="QtUicAfterTargets"
Category="General"
EnumProvider="Targets"
IncludeInCommandLine="False" Visible="False">
<DynamicEnumProperty.DisplayName>
<sys:String>Execute After</sys:String>
</DynamicEnumProperty.DisplayName>
<DynamicEnumProperty.Description>
<sys:String>Specifies the targets for the build customization to run after.</sys:String>
</DynamicEnumProperty.Description>
<DynamicEnumProperty.ProviderSettings>
<NameValuePair
Name="Exclude"
Value="^QtUicAfterTargets|^Compute" />
</DynamicEnumProperty.ProviderSettings>
<DynamicEnumProperty.DataSource>
<DataSource
Persistence="ProjectFile"
ItemType=""
HasConfigurationCondition="true" />
</DynamicEnumProperty.DataSource>
</DynamicEnumProperty>
<StringListProperty
Name="Outputs"
DisplayName="Outputs"
IncludeInCommandLine="False"
Visible="False" />
<StringListProperty
Name="AdditionalDependencies"
DisplayName="Additional Dependencies"
IncludeInCommandLine="False"/>
<StringProperty
Subtype="AdditionalOptions"
Name="AdditionalOptions"
Category="General">
<StringProperty.DisplayName>
<sys:String>Additional Options</sys:String>
</StringProperty.DisplayName>
<StringProperty.Description>
<sys:String>Additional Options</sys:String>
</StringProperty.Description>
</StringProperty>
<BoolProperty
Name="ParallelProcess"
DisplayName="Parallel Process"
Description="Run tool in parallel process."/>
</Rule>
<ItemType
Name="QtUic"
DisplayName="Qt User Interface Compiler (uic)" />
<FileExtension
Name="*.ui"
ContentType="QtUic" />
<ContentType
Name="QtUic"
DisplayName="Qt User Interface Compiler (uic)"
ItemType="QtUic" />
</ProjectSchemaDefinitions>

@ -51,8 +51,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,0,0,3025000
PRODUCTVERSION 0,0,0,3025000
FILEVERSION 0,0,0,6800050
PRODUCTVERSION 0,0,0,6800050
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -69,12 +69,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Peter Repukat - FlatspotSoftware"
VALUE "FileDescription", "GlosSI - Config"
VALUE "FileVersion", "0.0.0.3f250bd"
VALUE "FileVersion", "0.0.0.68fbe50"
VALUE "InternalName", "GlosSIConfig"
VALUE "LegalCopyright", "Copyright (C) 2021 Peter Repukat - FlatspotSoftware"
VALUE "OriginalFilename", "GlosSIConfig.exe"
VALUE "ProductName", "GlosSi"
VALUE "ProductVersion", "0.0.0.3f250bd"
VALUE "ProductVersion", "0.0.0.68fbe50"
END
END
BLOCK "VarFileInfo"
@ -102,3 +102,7 @@ END

Loading…
Cancel
Save