QtCompile.props (10975B)
1 <?xml version="1.0" encoding="utf-8"?> 2 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <PropertyGroup Label="UserMacros"> 4 <BinaryOutputDir>$(SolutionDir)bin\$(Platform)\</BinaryOutputDir> 5 <DSQTDIRDefault Condition="'$(Platform)'=='x64'">$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRDefault> 6 <DSQTDIRDefault Condition="'$(Platform)'=='ARM64'">$(SolutionDir)dep\msvc\deps-arm64\</DSQTDIRDefault> 7 <DSQTDIR Condition="Exists('$(DSQTDIRDefault)') And ('$(DSQTDIR)'=='' Or !Exists('$(DSQTDIR)'))">$(DSQTDIRDefault)</DSQTDIR> 8 <DSQTDIR Condition="Exists('$(DSQTDIR)') And !HasTrailingSlash('$(DSQTDIR)')">$(DSQTDIR)\</DSQTDIR> 9 <DSQTDIRHost>$(SolutionDir)dep\msvc\deps-x64\</DSQTDIRHost> 10 <DSQTDIRValid>false</DSQTDIRValid> 11 <DSQTDIRValid Condition="Exists('$(DSQTDIR)')">true</DSQTDIRValid> 12 <QtIncludeDir>$(DSQTDIR)include\</QtIncludeDir> 13 <QtLibDir>$(DSQTDIR)lib\</QtLibDir> 14 <QtBinDir>$(DSQTDIR)bin\</QtBinDir> 15 <QtHostBinDir>$(DSQTDIRHost)bin\</QtHostBinDir> 16 <QtPluginsDir>$(DSQTDIR)plugins\</QtPluginsDir> 17 <QtTranslationsDir>$(DSQTDIR)translations\</QtTranslationsDir> 18 <QtToolOutDir>$(IntDir)</QtToolOutDir> 19 <QtMocOutPrefix>$(QtToolOutDir)moc_</QtMocOutPrefix> 20 <QtTsOutDir>$(BinaryOutputDir)translations\</QtTsOutDir> 21 <QtRccOutDir>$(BinaryOutputDir)resources\</QtRccOutDir> 22 <QtDebugSuffix>d</QtDebugSuffix> 23 <QtLibSuffix Condition="$(Configuration.Contains(Debug))">$(QtDebugSuffix)</QtLibSuffix> 24 <QtPluginFolder>QtPlugins</QtPluginFolder> 25 <QtEntryPointLib>$(QtLibDir)Qt6EntryPoint$(QtLibSuffix).lib</QtEntryPointLib> 26 </PropertyGroup> 27 <ItemDefinitionGroup> 28 <ClCompile> 29 <PreprocessorDefinitions Condition="!$(Configuration.Contains(Debug))">QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> 30 <AdditionalIncludeDirectories>$(ProjectDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 31 <AdditionalIncludeDirectories>$(QtToolOutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 32 <AdditionalIncludeDirectories>$(QtIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 33 </ClCompile> 34 <Link> 35 <AdditionalLibraryDirectories>$(QtLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 36 <AdditionalDependencies>Qt6Core$(QtLibSuffix).lib;Qt6Gui$(QtLibSuffix).lib;Qt6Widgets$(QtLibSuffix).lib;Qt6Concurrent$(QtLibSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies> 37 </Link> 38 </ItemDefinitionGroup> 39 40 <!--Passes all .qrc files to rcc and puts output in the build directory--> 41 <ItemGroup> 42 <ResFiles Include="$(MSBuildProjectDirectory)\**\*.qrc" /> 43 </ItemGroup> 44 <Target Name="QtResource" 45 AfterTargets="Build" 46 Inputs="@(ResFiles)" 47 Condition="'@(QtResource)'!=''" 48 Outputs="@(ResFiles->'$(QtRccOutDir)%(Filename).rcc')"> 49 <Message Text="rcc %(ResFiles.Filename)" Importance="High" /> 50 <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" /> 51 <MakeDir Directories="$(QtRccOutDir)" /> 52 <Exec Command=""$(QtHostBinDir)rcc.exe" -binary -no-compress "%(ResFiles.FullPath)" -o "$(QtRccOutDir)%(ResFiles.Filename).rcc"" /> 53 </Target> 54 55 <Target Name="QtResourceClean"> 56 <Delete Files="@(ResFiles->'$(QtRccOutDir)%(Filename).rcc')" /> 57 </Target> 58 59 <!--Passes all .ui files to uic and puts output in the build directory--> 60 <ItemGroup> 61 <UiFiles Include="$(MSBuildProjectDirectory)\**\*.ui" /> 62 </ItemGroup> 63 <Target Name="QtUi" 64 BeforeTargets="ClCompile" 65 Inputs="@(UiFiles)" 66 Condition="'@(QtUi)'!=''" 67 Outputs="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')"> 68 <Message Text="uic %(UiFiles.Filename)" Importance="High" /> 69 <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" /> 70 <MakeDir Directories="$(QtToolOutDir)" /> 71 <Exec Command=""$(QtHostBinDir)uic.exe" "%(UiFiles.FullPath)" -o "$(QtToolOutDir)ui_%(UiFiles.Filename).h"" /> 72 </Target> 73 74 <Target Name="QtUiClean"> 75 <Delete Files="@(UiFiles->'$(QtToolOutDir)ui_%(Filename).h')" /> 76 </Target> 77 78 <!--Compile files needed to MOC and output in the build directory--> 79 <!--TODO find a way to autocreate from ClCompile settings--> 80 <PropertyGroup> 81 <MocDefines></MocDefines> 82 <MocDefines Condition="!$(Configuration.Contains(Debug))">-DQT_NO_DEBUG -DNDEBUG $(MocDefines)</MocDefines> 83 <MocIncludes>-I"$(QtIncludeDir)." -I"$(SolutionDir)pcsx2" "-I$(SolutionDir)." -I.</MocIncludes> 84 </PropertyGroup> 85 <Target Name="QtMoc" 86 BeforeTargets="ClCompile" 87 Condition="'@(QtMoc)'!=''" 88 Inputs="%(QtMoc.Identity);%(QtMoc.AdditionalDependencies);$(MSBuildProjectFile)" 89 Outputs="$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp"> 90 <Message Text="moc %(QtMoc.Filename) $(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp" Importance="High" /> 91 <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" /> 92 <MakeDir Directories="$(QtToolOutDir)" /> 93 <Exec Command=""$(QtHostBinDir)moc.exe" "%(QtMoc.FullPath)" -o "$(QtToolOutDir)%(QtMoc.RelativeDir)moc_%(QtMoc.Filename).cpp" -f%(QtMoc.Filename)%(QtMoc.Extension) $(MocDefines) $(MocIncludes)" /> 94 </Target> 95 96 <ItemGroup> 97 <MocOutputs Include="$(QtToolOutDir)moc_*.cpp" /> 98 </ItemGroup> 99 <Target Name="QtMocClean"> 100 <Delete Files="@(MocOutputs)" /> 101 </Target> 102 103 <!--Expose the new targets to VS--> 104 <ItemGroup> 105 <PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" /> 106 <AvailableItemName Include="QtResource"> 107 <Targets>QtResource</Targets> 108 </AvailableItemName> 109 <AvailableItemName Include="QtUi"> 110 <Targets>QtUi</Targets> 111 </AvailableItemName> 112 <AvailableItemName Include="QtMoc"> 113 <Targets>QtMoc</Targets> 114 </AvailableItemName> 115 <AvailableItemName Include="QtTs"> 116 <Targets>QtTs</Targets> 117 </AvailableItemName> 118 </ItemGroup> 119 120 <!--Copy the needed dlls--> 121 <ItemGroup> 122 <QtLibNames Include="Qt6Core$(QtLibSuffix);Qt6Gui$(QtLibSuffix);Qt6Widgets$(QtLibSuffix);Qt6Svg$(QtLibSuffix);Qt6Concurrent$(QtLibSuffix)" /> 123 <QtDlls Include="@(QtLibNames -> '$(QtBinDir)%(Identity).dll')" /> 124 <!--Filter plugins to copy based on the observation that all debug versions end in "d"--> 125 <QtAllPlugins Include="$(QtPluginsDir)**\*$(QtLibSuffix).dll" /> 126 <QtPlugins Condition="$(Configuration.Contains(Debug))" Include="@(QtAllPlugins)" /> 127 <QtPlugins Condition="!$(Configuration.Contains(Debug))" Exclude="$(QtPluginsDir)**\*$(QtDebugSuffix).dll" Include="@(QtAllPlugins)" /> 128 <QtPluginsDest Include="@(QtPlugins -> '$(BinaryOutputDir)$(QtPluginFolder)\%(RecursiveDir)%(Filename)%(Extension)')" /> 129 </ItemGroup> 130 <PropertyGroup> 131 <QtConfFile>$(BinaryOutputDir)qt.conf</QtConfFile> 132 </PropertyGroup> 133 <Target Name="QtCopyBinaries" 134 AfterTargets="Build" 135 Inputs="@(QtDlls);@(QtPlugins)" 136 Outputs="@(QtDlls -> '$(BinaryOutputDir)%(RecursiveDir)%(Filename)%(Extension)');@(QtPluginsDest)"> 137 <Message Text="Copying Qt .dlls" /> 138 <Copy 139 SourceFiles="@(QtDlls)" 140 DestinationFolder="$(BinaryOutputDir)" 141 SkipUnchangedFiles="true" 142 /> 143 <Copy 144 SourceFiles="@(QtPlugins)" 145 DestinationFiles="@(QtPluginsDest)" 146 SkipUnchangedFiles="true" 147 /> 148 </Target> 149 <Target Name="QtCreateConf" 150 BeforeTargets="QtCopyBinaries" 151 Condition="!Exists('$(QtConfFile)')"> 152 <!-- 153 Create a file which tells Qt where to look for "plugins". 154 Otherwise Qt only looks in ./<subtype>/type.dll instead of ./$(QtPluginFolder)/<subtype>/type.dll, which is messy 155 --> 156 <WriteLinesToFile 157 File="$(QtConfFile)" 158 Lines="[Paths];Plugins = ./$(QtPluginFolder)" 159 Overwrite="true" 160 /> 161 </Target> 162 163 <!--Copies base translation files, and combines split into one --> 164 <ItemGroup> 165 <AllQmFiles Include="$(QtTranslationsDir)qt*.qm"> 166 <Language>$([System.String]::Copy('%(Filename)').Substring($([MSBuild]::Add($([System.String]::Copy('%(Filename)').IndexOf('_')), 1))))</Language> 167 </AllQmFiles> 168 <BaseQmFiles Include="$(QtTranslationsDir)qtbase_*.qm" /> 169 <SourceMergeQmFileNames Include="@(BaseQmFiles -> '%(Filename)%(Extension)'->Replace('qtbase_', 'qt_'))" /> 170 <SourceMergeQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTranslationsDir)%(Filename)%(Extension)')" /> 171 <MergedQmFiles Include="@(SourceMergeQmFileNames -> '$(QtTsOutDir)%(Filename)%(Extension)')"> 172 <Language>$([System.String]::Copy('%(Filename)').Replace('qt_', ''))</Language> 173 </MergedQmFiles> 174 <CopyTsFilesSource Include="$(QtTranslationsDir)qt_*.qm" Exclude="@(SourceMergeQmFiles);$(QtTranslationsDir)\qt_help_*.qm" /> 175 <CopyTsFilesDest Include="@(CopyTsFilesSource -> '$(QtTsOutDir)%(Filename)%(Extension)')" /> 176 </ItemGroup> 177 <Target Name="QtGenerateBaseTranslations" AfterTargets="Build" Inputs="@(SourceMergeQmFiles)" Outputs="%(MergedQmFiles.FullPath)"> 178 <PropertyGroup> 179 <Language>%(MergedQmFiles.Language)</Language> 180 </PropertyGroup> 181 <Message Text="Generate Base Translation qt_$(Language).qm" Importance="High" /> 182 <ItemGroup> 183 <SourceQmFiles Include="%(AllQmFiles.FullPath)" Condition="'%(AllQmFiles.Language)' == '$(Language)'" /> 184 </ItemGroup> 185 <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" /> 186 <MakeDir Directories="$(QtTsOutDir)" /> 187 <Exec Command=""$(QtHostBinDir)lconvert.exe" -verbose -of qm -o "$(QtTsOutDir)qt_$(Language).qm" @(SourceQmFiles -> '"%(FullPath)"', ' ')" /> 188 </Target> 189 <Target Name="QtCopyBaseTranslations" 190 AfterTargets="Build" 191 Inputs="@(CopyTsFilesSource)" 192 Outputs="@(CopyTsFilesDest.FullPath)"> 193 <Message Text="Copy Base Translation %(CopyTsFilesSource.Filename)%(CopyTsFilesSource.Extension)" /> 194 <Copy SourceFiles="@(CopyTsFilesSource)" DestinationFiles="@(CopyTsFilesDest)" SkipUnchangedFiles="true" /> 195 </Target> 196 197 <!--Compiles all translation files--> 198 <ItemGroup> 199 <TsFiles Include="$(MSBuildProjectDirectory)\**\*.ts" /> 200 </ItemGroup> 201 <Target Name="QtTs" 202 BeforeTargets="ClCompile" 203 Inputs="@(TsFiles)" 204 Condition="'@(QtTs)'!=''" 205 Outputs="@(TsFiles->'$(QtTsOutDir)%(Filename).qm')"> 206 <Message Text="lrelease %(TsFiles.Filename)" Importance="High" /> 207 <Error Condition="!$(DSQTDIRValid)" Text="Qt directory non-existent (download/extract the zip)" /> 208 <MakeDir Directories="$(QtTsOutDir)" /> 209 <Exec Command=""$(QtHostBinDir)lrelease.exe" "%(TsFiles.FullPath)" -qm "$(QtTsOutDir)%(TsFiles.Filename).qm"" /> 210 </Target> 211 <ItemGroup> 212 <TsOutputs Include="$(QtTsOutDir)*.qm" /> 213 </ItemGroup> 214 <Target Name="QtTsClean"> 215 <Delete Files="@(TsOutputs)" /> 216 </Target> 217 </Project>