|
1 | 1 | <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
2 | 2 | <PropertyGroup Label="GoogleTest"> |
3 | 3 | <GoogleTestSourceDir>$(MSBuildThisFileDirectory)googletest\</GoogleTestSourceDir> |
4 | | - <GoogleTestBuildDir>$(MSBuildThisFileDirectory)build\$(Platform)\$(Configuration)\googletest\</GoogleTestBuildDir> |
| 4 | + <GoogleTestBuildDir>$(MSBuildThisFileDirectory)build\$(Platform)\$(Configuration)\googletest</GoogleTestBuildDir> |
5 | 5 | <IncludePath>$(GoogleTestSourceDir)googletest\include;$(IncludePath)</IncludePath> |
6 | 6 | <LibraryPath>$(GoogleTestBuildDir)\lib;$(GoogleTestBuildDir)\lib\$(Configuration);$(LibraryPath)</LibraryPath> |
| 7 | + <NameSuffix Condition="'$(Configuration)' == 'Debug'">d</NameSuffix> |
| 8 | + <NameSuffix Condition="'$(Configuration)' == 'Release'"></NameSuffix> |
7 | 9 | </PropertyGroup> |
8 | 10 | <ItemDefinitionGroup Label="GoogleTest.Requirements"> |
9 | 11 | <ClCompile> |
10 | 12 | <PreprocessorDefinitions>_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
11 | 13 | </ClCompile> |
12 | 14 | </ItemDefinitionGroup> |
13 | | - <ItemDefinitionGroup Label="GoogleTest.Libs" Condition="'$(Configuration)' == 'Debug'"> |
| 15 | + <ItemDefinitionGroup Label="GoogleTest.Libs"> |
14 | 16 | <Link> |
15 | | - <AdditionalDependencies>gtestd.lib;%(AdditionalDependencies)</AdditionalDependencies> |
16 | | - <AdditionalDependencies>gtest_maind.lib;%(AdditionalDependencies)</AdditionalDependencies> |
| 17 | + <AdditionalDependencies>gtest$(NameSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies> |
| 18 | + <AdditionalDependencies>gtest_main$(NameSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies> |
17 | 19 | </Link> |
18 | 20 | </ItemDefinitionGroup> |
19 | | - <ItemDefinitionGroup Label="GoogleTest.Libs" Condition="'$(Configuration)' == 'Release'"> |
20 | | - <Link> |
21 | | - <AdditionalDependencies>gtest.lib;%(AdditionalDependencies)</AdditionalDependencies> |
22 | | - <AdditionalDependencies>gtest_main.lib;%(AdditionalDependencies)</AdditionalDependencies> |
23 | | - </Link> |
24 | | - </ItemDefinitionGroup> |
25 | | - <ItemGroup Label="GoogleTest.Pdbs" Condition="'$(Configuration)' == 'Debug'"> |
26 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\gtestd.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtestd.pdb')" /> |
27 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\gtest_maind.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtest_maind.pdb')" /> |
28 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtestd.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtestd.pdb')" /> |
29 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_maind.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_maind.pdb')" /> |
30 | | - </ItemGroup> |
31 | | - <ItemGroup Label="GoogleTest.Pdbs" Condition="'$(Configuration)' == 'Release'"> |
32 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\gtest.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtest.pdb')" /> |
33 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\gtest_main.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtest_main.pdb')" /> |
34 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtest.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtest.pdb')" /> |
35 | | - <ReferenceCopyLocalPaths Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_main.pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_main.pdb')" /> |
36 | | - </ItemGroup> |
37 | | - <Target Name="BuildGoogleTest" BeforeTargets="ClCompile"> |
| 21 | + <Target Name="FindGit" Condition="'$(GitCmd)' == ''"> |
| 22 | + <Message Text="Checking Git for Windows" Importance="high" /> |
| 23 | + <Exec Command="where "$(PATH);$(ProgramW6432)\Git\Cmd;$(ProgramFiles)\Git\Cmd:git"" ConsoleToMSBuild="true"> |
| 24 | + <Output TaskParameter="ConsoleOutput" PropertyName="GitCmd" /> |
| 25 | + </Exec> |
| 26 | + <PropertyGroup> |
| 27 | + <GitCmd>$([System.Text.RegularExpressions.Regex]::Replace('$(GitCmd)', '^([^;]+);.*', '$1'))</GitCmd> |
| 28 | + </PropertyGroup> |
| 29 | + </Target> |
| 30 | + <Target Name="UpdateGoogleTest" DependsOnTargets="FindGit" Condition="!Exists('$(GoogleTestSourceDir)\CMakeLists.txt')"> |
| 31 | + <Exec Command=""$(GitCmd)" submodule init" WorkingDirectory="$(GoogleTestSourceDir)" /> |
| 32 | + <Exec Command=""$(GitCmd)" submodule update" WorkingDirectory="$(GoogleTestSourceDir)" /> |
| 33 | + </Target> |
| 34 | + <Target Name="MakeGoogleTestBuildDir" Condition="!Exists('$(GoogleTestBuildDir)')"> |
| 35 | + <MakeDir Directories="$(GoogleTestBuildDir)" /> |
| 36 | + </Target> |
| 37 | + <Target Name="BuildGoogleTest" DependsOnTargets="UpdateGoogleTest;MakeGoogleTestBuildDir" BeforeTargets="ClCompile"> |
38 | 38 | <PropertyGroup> |
39 | 39 | <VcVarsArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'x86' And '$(PlatformTarget)' == 'x86'">x86</VcVarsArchitecture> |
40 | 40 | <VcVarsArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'x86' And '$(PlatformTarget)' == 'x64'">x86_amd64</VcVarsArchitecture> |
41 | 41 | <VcVarsArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'AMD64' And '$(PlatformTarget)' == 'x86'">amd64_x86</VcVarsArchitecture> |
42 | 42 | <VcVarsArchitecture Condition="'$(PROCESSOR_ARCHITECTURE)' == 'AMD64' And '$(PlatformTarget)' == 'x64'">amd64</VcVarsArchitecture> |
43 | 43 | <NumVersion>$([System.Text.RegularExpressions.Regex]::Replace('$(VisualStudioVersion)', '^(\d+).*', '$1'))</NumVersion> |
44 | | - <NextVersion>$([MSBuild]::Add($(NumVersion), 1))</NextVersion> |
| 44 | + <ProductLineVersion>$([System.Text.RegularExpressions.Regex]::Replace('$(VisualStudioEdition)', '^.* (\d+).*', '$1'))</ProductLineVersion> |
45 | 45 | <GeneratorSuffix Condition="'$(PlatformTarget)' == 'x86'"></GeneratorSuffix> |
46 | 46 | <GeneratorSuffix Condition="'$(PlatformTarget)' == 'x64'"> Win64</GeneratorSuffix> |
| 47 | + <VsGeneratorName>Visual Studio $(NumVersion) $(ProductLineVersion)$(GeneratorSuffix)</VsGeneratorName> |
47 | 48 | </PropertyGroup> |
48 | | - <MakeDir Condition="!Exists('$(GoogleTestBuildDir)')" Directories="$(GoogleTestBuildDir)" /> |
49 | | - <Message Text="Cheking product line version of the Visual Studio." Importance="high" /> |
50 | | - <Exec Command=""$(VSInstallDir)..\..\Installer\vswhere.exe" -version [$(NumVersion),$(NextVersion)] -property catalog_productLineVersion" ConsoleToMSBuild="true"> |
51 | | - <Output TaskParameter="ConsoleOutput" PropertyName="ProductLineVersion" /> |
52 | | - </Exec> |
53 | | - <Exec Command="$(MSBuildThisFileDirectory)googletest.build.cmd $(GoogleTestSourceDir) "Visual Studio $(NumVersion) $(ProductLineVersion)$(GeneratorSuffix)" $(Configuration) "$(VSInstallRoot)/VC/Auxiliary/Build/vcvarsall.bat" $(VcVarsArchitecture)" WorkingDirectory="$(GoogleTestBuildDir)" /> |
| 49 | + <Exec Command="$(MSBuildThisFileDirectory)googletest.build.cmd $(GoogleTestSourceDir) "$(VsGeneratorName)" $(Configuration) "$(VSInstallRoot)/VC/Auxiliary/Build/vcvarsall.bat" $(VcVarsArchitecture)" WorkingDirectory="$(GoogleTestBuildDir)" /> |
| 50 | + </Target> |
| 51 | + <Target Name="CopyGoogleTestPdb" AfterTargets="BuildGoogleTest"> |
| 52 | + <ItemGroup> |
| 53 | + <GoogleTestPdb Include="$(GoogleTestBuildDir)\bin\gtest$(NameSuffix).pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtest$(NameSuffix).pdb')" /> |
| 54 | + <GoogleTestPdb Include="$(GoogleTestBuildDir)\bin\gtest_main$(NameSuffix).pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\gtest_main$(NameSuffix).pdb')" /> |
| 55 | + <GoogleTestPdb Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtest$(NameSuffix).pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtest$(NameSuffix).pdb')" /> |
| 56 | + <GoogleTestPdb Include="$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_main$(NameSuffix).pdb" Condition="Exists('$(GoogleTestBuildDir)\bin\$(Configuration)\gtest_main$(NameSuffix).pdb')" /> |
| 57 | + </ItemGroup> |
| 58 | + <Copy SourceFiles="@(GoogleTestPdbFound)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" /> |
54 | 59 | </Target> |
55 | 60 | <Target Name="AppendCleanTargets" BeforeTargets="CoreClean"> |
56 | 61 | <!-- Add files to @Clean just before running CoreClean. --> |
57 | 62 | <ItemGroup> |
58 | | - <Clean Include="$(OutDir)gtestd.pdb" /> |
59 | | - <Clean Include="$(OutDir)gtest_maind.pdb" /> |
60 | | - <Clean Include="$(OutDir)gtest.pdb" /> |
61 | | - <Clean Include="$(OutDir)gtest_main.pdb" /> |
| 63 | + <Clean Include="$(OutDir)gtest$(NameSuffix).pdb" /> |
| 64 | + <Clean Include="$(OutDir)gtest_main$(NameSuffix).pdb" /> |
62 | 65 | </ItemGroup> |
63 | 66 | <RemoveDir Directories="$(GoogleTestBuildDir)" /> |
64 | 67 | </Target> |
|
0 commit comments