mirror of
https://github.com/libretro/dolphin
synced 2024-11-04 20:43:51 -05:00
af55938538
The new method supports build parallelism and cleaner integration into msbuild dependency flows.
121 lines
6.4 KiB
XML
121 lines
6.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<PropertyGroup Label="UserMacros">
|
|
<QTDIRDefault Condition="'$(Platform)'=='x64'">$(ExternalsDir)Qt\Qt5.15.0\msvc2019_64\</QTDIRDefault>
|
|
<QTDIRDefault Condition="'$(Platform)'=='ARM64'">$(ExternalsDir)Qt\Qt5.15.0\msvc2019_arm64\</QTDIRDefault>
|
|
<QTDIR Condition="Exists('$(QTDIRDefault)') And ('$(QTDIR)'=='' Or !Exists('$(QTDIR)'))">$(QTDIRDefault)</QTDIR>
|
|
<QTDIR Condition="Exists('$(QTDIR)') And !HasTrailingSlash('$(QTDIR)')">$(QTDIR)\</QTDIR>
|
|
<QtDirValid>false</QtDirValid>
|
|
<QtDirValid Condition="Exists('$(QTDIR)')">true</QtDirValid>
|
|
<QtIncludeDir>$(QTDIR)include\</QtIncludeDir>
|
|
<QtLibDir>$(QTDIR)lib\</QtLibDir>
|
|
<QtBinDir>$(QTDIR)bin\</QtBinDir>
|
|
<QtPluginsDir>$(QTDIR)plugins\</QtPluginsDir>
|
|
<QtToolOutDir>$(IntDir)</QtToolOutDir>
|
|
<QtDebugSuffix>d</QtDebugSuffix>
|
|
<QtLibSuffix Condition="'$(Configuration)'=='Debug'">$(QtDebugSuffix)</QtLibSuffix>
|
|
<QtPluginFolder>QtPlugins</QtPluginFolder>
|
|
</PropertyGroup>
|
|
<ItemDefinitionGroup>
|
|
<ClCompile>
|
|
<PreprocessorDefinitions Condition="'$(Configuration)'=='Release'">QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
<PreprocessorDefinitions>QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
<PreprocessorDefinitions>QT_USE_QSTRINGBUILDER;QT_NO_CAST_FROM_ASCII;QT_NO_CAST_TO_ASCII;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
<AdditionalIncludeDirectories>$(QtToolOutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<AdditionalIncludeDirectories>$(QtIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<AdditionalIncludeDirectories>$(QtIncludeDir)QtCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<AdditionalIncludeDirectories>$(QtIncludeDir)QtGui;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<AdditionalIncludeDirectories>$(QtIncludeDir)QtWidgets;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<AdditionalIncludeDirectories Condition="'$(Platform)'=='ARM64'">$(QtIncludeDir)QtANGLE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
<!--
|
|
Negate the previously enabled warning (set in Base.props). Not compatible with QtCore\qtmap.h
|
|
This isn't too bad since we live with the fact that Qt-using projects will have different compiler args already.
|
|
-->
|
|
<AdditionalOptions>%(AdditionalOptions) /wd4946</AdditionalOptions>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalLibraryDirectories>$(QtLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
<AdditionalDependencies>qtmain$(QtLibSuffix).lib;Qt5Core$(QtLibSuffix).lib;Qt5Gui$(QtLibSuffix).lib;Qt5Widgets$(QtLibSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<SubSystem>Windows</SubSystem>
|
|
<!--
|
|
<AdditionalOptions>"/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\" %(AdditionalOptions)</AdditionalOptions>
|
|
-->
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
|
|
<!--
|
|
Use the moc implementation provided by "Qt VS Tools"
|
|
see: https://code.qt.io/cgit/qt-labs/vstools.git/tree/src/qtmsbuild
|
|
This provides a wrapper around moc which deals with parallel dispatch to moc,
|
|
as well as creating ClCompile inputs from the moc outputs.
|
|
Note that we currently pass the same ClCompile.PreprocessorDefinitions to moc,
|
|
but not the include paths, as passing include paths drastically slows down
|
|
moc, and it doesn't appear to actually need them anyway.
|
|
-->
|
|
<Import Project="qtmoc.props" />
|
|
<ItemDefinitionGroup>
|
|
<QtMoc>
|
|
<OutputFile>$(QtToolOutDir)moc_%(Filename).cpp</OutputFile>
|
|
<QtMocDir>$(QtToolOutDir)</QtMocDir>
|
|
</QtMoc>
|
|
</ItemDefinitionGroup>
|
|
<Import Project="qt_globals.targets"/>
|
|
<Import Project="qt_tasks.targets"/>
|
|
<Import Project="qtmoc.targets" />
|
|
<Target Name="QtCheckQtDir" BeforeTargets="QtMocInit" Condition="!$(QtDirValid)">
|
|
<Error Text="QTDIR not set or non-existent (pull the submodule?)" />
|
|
</Target>
|
|
|
|
<!--Expose the new targets to VS-->
|
|
<ItemGroup>
|
|
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
|
|
</ItemGroup>
|
|
|
|
<!--Copy the needed dlls-->
|
|
<ItemGroup>
|
|
<QtLibNames Include="Qt5Core$(QtLibSuffix);Qt5Gui$(QtLibSuffix);Qt5Widgets$(QtLibSuffix)" />
|
|
|
|
<!-- Include ANGLE for ARM64 since there is no native OpenGL -->
|
|
<QtLibNames Condition="'$(Platform)'=='ARM64'" Include="$(QtLibNames);libEGL$(QtLibSuffix);libGLESv2$(QtLibSuffix)" />
|
|
|
|
<QtDlls Include="@(QtLibNames -> '$(QtBinDir)%(Identity).dll')" />
|
|
<!--Filter plugins to copy based on the observation that all debug versions end in "d"-->
|
|
<QtAllPlugins Include="$(QtPluginsDir)**\*$(QtLibSuffix).dll" />
|
|
<QtPlugins Condition="'$(Configuration)'=='Debug'" Include="@(QtAllPlugins)" />
|
|
<QtPlugins Condition="'$(Configuration)'=='Release'" Exclude="$(QtPluginsDir)**\*$(QtDebugSuffix).dll" Include="@(QtAllPlugins)" />
|
|
<QtPluginsDest Include="@(QtPlugins -> '$(BinaryOutputDir)$(QtPluginFolder)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
|
</ItemGroup>
|
|
<PropertyGroup>
|
|
<QtConfFile>$(BinaryOutputDir)qt.conf</QtConfFile>
|
|
</PropertyGroup>
|
|
<Target Name="QtCopyBinaries"
|
|
AfterTargets="Build"
|
|
Inputs="@(QtDlls);@(QtPlugins)"
|
|
Outputs="@(QtDlls -> '$(BinaryOutputDir)%(RecursiveDir)%(Filename)%(Extension)');@(QtPlugins -> '$(BinaryOutputDir)$(QtPluginFolder)\%(RecursiveDir)%(Filename)%(Extension)')">
|
|
<Message Text="Copying Qt .dlls" Importance="High" />
|
|
<Copy
|
|
SourceFiles="@(QtDlls)"
|
|
DestinationFolder="$(BinaryOutputDir)"
|
|
SkipUnchangedFiles="true"
|
|
/>
|
|
<Copy
|
|
SourceFiles="@(QtPlugins)"
|
|
DestinationFiles="@(QtPluginsDest)"
|
|
SkipUnchangedFiles="true"
|
|
/>
|
|
</Target>
|
|
<Target Name="QtCreateConf"
|
|
BeforeTargets="QtCopyBinaries"
|
|
Condition="!Exists('$(QtConfFile)')">
|
|
<!--
|
|
Create a file which tells Qt where to look for "plugins".
|
|
Otherwise Qt only looks in ./<subtype>/type.dll instead of ./$(QtPluginFolder)/<subtype>/type.dll, which is messy
|
|
-->
|
|
<WriteLinesToFile
|
|
File="$(QtConfFile)"
|
|
Lines="[Paths];Plugins = ./$(QtPluginFolder)"
|
|
Overwrite="true"
|
|
/>
|
|
</Target>
|
|
</Project>
|