-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGo.Agent.targets
105 lines (89 loc) · 4.76 KB
/
Go.Agent.targets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<!--
References:
https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63
https://stackoverflow.com/questions/49078510/trouble-compiling-windows-dll-using-golang-1-10
Summary
Input:
Product
TargetName
BuildMode
+ GoSourceDir
+ GoResourceDir
TargetDir += BuildMode
+ TargetExt
+ TargetName
+ TargetExt
+ TargetFileName
+ TargetPath
-->
<Project InitialTargets="TraceGoAgent">
<PropertyGroup>
<TargetName Condition="'$(TargetName)' == ''">$(MSBuildProjectName)</TargetName>
<TargetDir Condition="'$(BuildMode)' != '' And !$(ProjectRelativeTargetDir.Contains('$(BuildMode)'))">$([MSBuild]::EnsureTrailingSlash('$(TargetDir)$(BuildMode)'))</TargetDir>
<TargetExt >$(ZouExeExtension)</TargetExt>
<TargetFileName>$(TargetName)$(TargetExt)</TargetFileName>
<TargetPath >$(TargetDir)$(TargetFileName)</TargetPath>
</PropertyGroup>
<PropertyGroup>
<GoSourceDir Condition="'$(GoSourceDir)' == ''">$(ProjectDir)</GoSourceDir>
<GoResourceDir Condition="'$(GoResourceDir)' == ''">$(ProjectDir)resources\</GoResourceDir>
</PropertyGroup>
<ItemGroup>
<GoSource Include="$(GoSourceDir)**\*.go" />
<GoResource Include="$(GoResourceDir)**\*" />
<TargetPath Condition="'@(TargetName->Count())'!='0'" Include="@(TargetName->'$(TargetDir)%(Identity)$(TargetExt)')" />
<TargetPath Condition="'@(TargetName->Count())'=='0'" Include="$(TargetDir)$(TargetName)*$(TargetExt)" />
<!-- Additional environment for go generate -->
<GoBuildEnv Include="CONFIGURATION=$(Configuration)" />
<GoBuildEnv Include="TARGETPATH=$(TargetPath)" />
<GoBuildEnv Include="BUILDMODE=$(BuildMode)" />
</ItemGroup>
<Target Name="GoInitSingleTargetPath">
<!-- multiple target support -->
<PropertyGroup>
<!-- Get last TargetPath item -->
<GoSingleTargetPath>%(TargetPath.Identity)</GoSingleTargetPath>
<GoSingleTargetPath Condition="'$(GoSingleTargetPath)' == ''">$(TargetPath)</GoSingleTargetPath>
</PropertyGroup>
</Target>
<Target Name="GoBuildVersionInfo" DependsOnTargets="GoGetTools">
<PropertyGroup>
<GoVerInfoFlags Condition="$(Platform.EndsWith('x64'))">-64</GoVerInfoFlags>
<GoVerInfoFlags Condition="Exists('$(TargetFileName).$(Configuration).manifest')">$(GoVerInfoFlags) -manifest="$(TargetFileName).$(Configuration).manifest"</GoVerInfoFlags>
<GoVerInfoFlags >$(GoVerInfoFlags) -product-version=$(Version)</GoVerInfoFlags>
</PropertyGroup>
<Exec Command="$(GoVerInfoPath) $(GoVerInfoFlags)" WorkingDirectory="$(ProjectDir)" EnvironmentVariables="@(GoBuildEnv)" StandardOutputImportance='low' />
</Target>
<Target Name="GoBuild" BeforeTargets="Build" DependsOnTargets="GoInitSingleTargetPath;GoBuildVersionInfo" Inputs="@(GoSource);@(GoResource)" Outputs="$(GoSingleTargetPath)">
<Message Importance="high" Text="go generate [$(ProjectPath)]" />
<Delete Files="@(GoOutputFile)" />
<Exec Command="go generate" WorkingDirectory="$(ProjectDir)" EnvironmentVariables="@(GoBuildEnv)" StandardOutputImportance="low" >
<Output TaskParameter="ExitCode" PropertyName="GoGenerateExitCode" />
</Exec>
<ItemGroup>
<TargetPath Condition="'@(TargetName->Count())'=='0'" Include="$(TargetDir)$(TargetName)*$(TargetExt)" />
</ItemGroup>
<Message Condition="'$(GoGenerateExitCode)' == '0'" Importance="high" Text="$(ProjectName) -> %(TargetPath.RootDir)%(Directory)%(RecursiveDir)%(FileName)%(Extension)" />
</Target>
<Target Name="GoClean" AfterTargets="Clean">
<Message Importance="high" Text="go clean [$(ProjectPath)]" />
<Exec Command="go clean" WorkingDirectory="$(ProjectDir)" StandardOutputImportance="low" ContinueOnError="true" />
<Delete Files="@(TargetPath)" />
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
<Target Name="TraceGoAgent" Condition="'$(ZouTraceGo)' == 'true' Or '$(MSBuildProjectFile)' == '$(MSBuildThisFile)'">
<Message Importance="high" Text="zou/Go.Agent.targets [$(MSBuildProjectFile)]" />
<Message Importance="high" Text="--------------------" />
<Message Importance="high" Text="BuildMode = $(BuildMode)" />
<Message Importance="high" Text="TargetDir = $(TargetDir)" />
<Message Importance="high" Text="TargetName = $(TargetName)" />
<Message Importance="high" Text="TargetExt = $(TargetExt)" />
<Message Importance="high" Text="TargetFileName = $(TargetFileName)" />
<Message Importance="high" Text="TargetPath = $(TargetPath)" />
<Message Importance="high" Text="GoSourceDir = $(GoSourceDir)" />
<Message Importance="high" Text="GoResourceDir = $(GoResourceDir)" />
<Message Importance="high" Text=" " />
<LogItems Items="@(GoBuildEnv)" Title="GoBuildEnv" />
<Message Importance="high" Text=" " />
</Target>
</Project>