6
6
<Keyword >MakeFileProj</Keyword >
7
7
<VCProjectUpgraderObjectName >NoUpgrade</VCProjectUpgraderObjectName >
8
8
</PropertyGroup >
9
- <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug|arm64'" >
9
+
10
+ <!-- Windows -->
11
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-x86_32|windows'" >
10
12
<GodotConfiguration >Debug</GodotConfiguration >
11
- <GodotPlatform >arm64</GodotPlatform >
13
+ <GodotPlatform >windows</GodotPlatform >
14
+ <GodotTemplate >template_debug</GodotTemplate >
15
+ <Arch >x86_32</Arch >
12
16
</PropertyGroup >
13
- <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug|x64'" >
17
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-x86_32|windows'" >
18
+ <GodotConfiguration >Release</GodotConfiguration >
19
+ <GodotPlatform >windows</GodotPlatform >
20
+ <GodotTemplate >template_release</GodotTemplate >
21
+ <Arch >x86_32</Arch >
22
+ </PropertyGroup >
23
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-x86_64|windows'" >
14
24
<GodotConfiguration >Debug</GodotConfiguration >
15
- <GodotPlatform >x64</GodotPlatform >
25
+ <GodotPlatform >windows</GodotPlatform >
26
+ <GodotTemplate >template_debug</GodotTemplate >
27
+ <Arch >x86_64</Arch >
28
+ </PropertyGroup >
29
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-x86_64|windows'" >
30
+ <GodotConfiguration >Release</GodotConfiguration >
31
+ <GodotPlatform >windows</GodotPlatform >
32
+ <GodotTemplate >template_release</GodotTemplate >
33
+ <Arch >x86_64</Arch >
34
+ </PropertyGroup >
35
+
36
+ <!-- Linux -->
37
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-x86_64|linux'" >
38
+ <GodotConfiguration >Debug</GodotConfiguration >
39
+ <GodotPlatform >linux</GodotPlatform >
40
+ <GodotTemplate >template_debug</GodotTemplate >
41
+ <Arch >x86_64</Arch >
42
+ </PropertyGroup >
43
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-x86_64|linux'" >
44
+ <GodotConfiguration >Release</GodotConfiguration >
45
+ <GodotPlatform >linux</GodotPlatform >
46
+ <GodotTemplate >template_release</GodotTemplate >
47
+ <Arch >x86_64</Arch >
48
+ </PropertyGroup >
49
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-arm64|linux'" >
50
+ <GodotConfiguration >Debug</GodotConfiguration >
51
+ <GodotPlatform >linux</GodotPlatform >
52
+ <GodotTemplate >template_debug</GodotTemplate >
53
+ <Arch >arm64</Arch >
54
+ </PropertyGroup >
55
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-arm64|linux'" >
56
+ <GodotConfiguration >Release</GodotConfiguration >
57
+ <GodotPlatform >linux</GodotPlatform >
58
+ <GodotTemplate >template_release</GodotTemplate >
59
+ <Arch >arm64</Arch >
60
+ </PropertyGroup >
61
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-rv64|linux'" >
62
+ <GodotConfiguration >Debug</GodotConfiguration >
63
+ <GodotPlatform >linux</GodotPlatform >
64
+ <GodotTemplate >template_debug</GodotTemplate >
65
+ <Arch >rv64</Arch >
66
+ </PropertyGroup >
67
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-rv64|linux'" >
68
+ <GodotConfiguration >Release</GodotConfiguration >
69
+ <GodotPlatform >linux</GodotPlatform >
70
+ <GodotTemplate >template_release</GodotTemplate >
71
+ <Arch >rv64</Arch >
72
+ </PropertyGroup >
73
+
74
+ <!-- macOS (no arch in config) -->
75
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug|macos'" >
76
+ <GodotConfiguration >Debug</GodotConfiguration >
77
+ <GodotPlatform >macos</GodotPlatform >
78
+ <GodotTemplate >template_debug</GodotTemplate >
79
+ <Arch ></Arch > <!-- no arch in example.gdextension -->
80
+ </PropertyGroup >
81
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release|macos'" >
82
+ <GodotConfiguration >Release</GodotConfiguration >
83
+ <GodotPlatform >macos</GodotPlatform >
84
+ <GodotTemplate >template_release</GodotTemplate >
85
+ <Arch ></Arch >
86
+ </PropertyGroup >
87
+
88
+ <!-- iOS -->
89
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-arm64|ios'" >
90
+ <GodotConfiguration >Debug</GodotConfiguration >
91
+ <GodotPlatform >ios</GodotPlatform >
92
+ <GodotTemplate >template_debug</GodotTemplate >
93
+ <Arch >arm64</Arch >
94
+ </PropertyGroup >
95
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-arm64|ios'" >
96
+ <GodotConfiguration >Release</GodotConfiguration >
97
+ <GodotPlatform >ios</GodotPlatform >
98
+ <GodotTemplate >template_release</GodotTemplate >
99
+ <Arch >arm64</Arch >
16
100
</PropertyGroup >
101
+
102
+ <!-- Android -->
103
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-x86_64|android'" >
104
+ <GodotConfiguration >Debug</GodotConfiguration >
105
+ <GodotPlatform >android</GodotPlatform >
106
+ <GodotTemplate >template_debug</GodotTemplate >
107
+ <Arch >x86_64</Arch >
108
+ </PropertyGroup >
109
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-x86_64|android'" >
110
+ <GodotConfiguration >Release</GodotConfiguration >
111
+ <GodotPlatform >android</GodotPlatform >
112
+ <GodotTemplate >template_release</GodotTemplate >
113
+ <Arch >x86_64</Arch >
114
+ </PropertyGroup >
115
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-arm64|android'" >
116
+ <GodotConfiguration >Debug</GodotConfiguration >
117
+ <GodotPlatform >android</GodotPlatform >
118
+ <GodotTemplate >template_debug</GodotTemplate >
119
+ <Arch >arm64</Arch >
120
+ </PropertyGroup >
121
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-arm64|android'" >
122
+ <GodotConfiguration >Release</GodotConfiguration >
123
+ <GodotPlatform >android</GodotPlatform >
124
+ <GodotTemplate >template_release</GodotTemplate >
125
+ <Arch >arm64</Arch >
126
+ </PropertyGroup >
127
+
128
+ <!-- Web (wasm32) -->
129
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-wasm32|web'" >
130
+ <GodotConfiguration >Debug</GodotConfiguration >
131
+ <GodotPlatform >web</GodotPlatform >
132
+ <GodotTemplate >template_debug</GodotTemplate >
133
+ <Arch >wasm32</Arch >
134
+ </PropertyGroup >
135
+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Release-wasm32|web'" >
136
+ <GodotConfiguration >Release</GodotConfiguration >
137
+ <GodotPlatform >web</GodotPlatform >
138
+ <GodotTemplate >template_release</GodotTemplate >
139
+ <Arch >wasm32</Arch >
140
+ </PropertyGroup >
141
+
17
142
<PropertyGroup >
18
143
<IsWindows >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))</IsWindows >
19
144
<IsMac >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))</IsMac >
20
145
<IsLinux >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))</IsLinux >
21
146
</PropertyGroup >
22
147
<Import Project =" $(VCTargetsPath)/Microsoft.Cpp.Default.props" Condition =" $(IsWindows)" />
23
- <Import Project =" $(MSBuildProjectDirectory)/targets/JetBrains.Rider.Cpp.targets" Condition =" $(IsMac) OR $(IsLinux)" />
148
+ <Import Project =" $(MSBuildProjectDirectory)/targets/JetBrains.Rider.Cpp.targets" Condition =" $(IsMac) OR $(IsLinux)" />
149
+
150
+ <PropertyGroup Label =" UserMacros" >
151
+ <!-- Mirror useful CMake variables as MSBuild properties for consistency -->
152
+ <ExtensionName Condition =" '$(ExtensionName)' == ''" >EXTENSION-NAME</ExtensionName >
153
+ <!-- The directory of the Godot game project -->
154
+ <GameProjectDir Condition =" '$(GameProjectDir)' == ''" >demo</GameProjectDir >
155
+ <!-- Expose quick-switch properties to the IDE (can be overridden in godot.user.props) -->
156
+ <Precision Condition =" '$(Precision)' == ''" >single</Precision > <!-- single or double-->
157
+ <Threads Condition =" '$(Threads)' == ''" >threads</Threads >
158
+ </PropertyGroup >
159
+ <Import Project =" $(MSBuildProjectDirectory)/targets/godot.user.props" Condition =" Exists('$(MSBuildProjectDirectory)/targets/godot.user.props')" />
160
+
24
161
<PropertyGroup Label =" Configuration" >
25
162
<ConfigurationType >Makefile</ConfigurationType >
26
163
<UseOfMfc >false</UseOfMfc >
27
- <PlatformToolset >v143</PlatformToolset > <!-- Might be overridden in the platform specific import or godot.user.props -->
164
+ <PlatformToolset >v143</PlatformToolset > <!-- Makes Visual Studio happy. Might be overridden in the platform specific import or godot.user.props -->
28
165
<DefaultPlatformToolset Condition =" '$(DefaultPlatformToolset)'==''" /> <!-- Workaround until https://youtrack.jetbrains.com/issue/RIDER-123783 is resolved. -->
29
- <OutDir >$(SolutionDir)/bin</OutDir >
30
- <IntDir >obj/</IntDir >
31
- <LayoutDir >$(OutDir)/Layout</LayoutDir >
32
166
<NMakeIncludeSearchPath >godot-cpp/gen/include;godot-cpp/include;godot-cpp/gdextension;$(NMakeIncludeSearchPath);</NMakeIncludeSearchPath >
167
+ <!-- Default debugger command should point to GodotEditor; if env var GODOT is provided, use it -->
168
+ <LocalDebuggerCommand Condition =" '$(LocalDebuggerCommand)' == '' and '$(GODOT)' != ''" >$(GODOT)</LocalDebuggerCommand >
169
+ <LocalDebuggerCommand Condition =" '$(LocalDebuggerCommand)' == '' and '$(GODOT)' == ''" >godot</LocalDebuggerCommand >
170
+ <!-- Commands executed by Build/Rebuild/Clean in the IDE (Rider, VS) -->
171
+ <NMakeBuildCommandLine >scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate)</NMakeBuildCommandLine >
172
+ <NMakeReBuildCommandLine >scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) && scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate)</NMakeReBuildCommandLine >
173
+ <NMakeCleanCommandLine >scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate)</NMakeCleanCommandLine >
33
174
</PropertyGroup >
34
175
<Import Project =" $(VCTargetsPath)/Microsoft.Cpp.props" Condition =" $(IsWindows)" />
35
176
<ImportGroup Label =" ExtensionSettings" >
36
177
</ImportGroup >
37
- <PropertyGroup Label =" UserMacros" />
38
- <Import Project =" $(MSBuildProjectDirectory)/targets/nmake.props" />
39
- <Import Project =" $(MSBuildProjectDirectory)/targets/godot.user.props" Condition =" Exists('$(MSBuildProjectDirectory)/targets/godot.user.props')" />
40
178
<ItemGroup >
41
179
<ClInclude Include =" godot-cpp/**/*.h" />
42
180
<ClInclude Include =" godot-cpp/**/*.hpp" />
43
181
<ClInclude Include =" src/**/*.h" />
44
182
<ClCompile Include =" godot-cpp/**/*.cpp" />
45
183
<ClCompile Include =" src/**/*.cpp" />
46
184
</ItemGroup >
185
+
47
186
<!-- Build/Rebuild/Clean targets for NMake are defined in MSVC, so we need to provide them, when using MSBuild without MSVC targets -->
48
187
<Import Project =" $(MSBuildProjectDirectory)/targets/nmake.substitution.props" Condition =" !Exists('$(VCTargetsPath)/Microsoft.Cpp.targets')" />
49
188
189
+ <!-- Mirror CMake post-build copy into the Godot project bin directory -->
190
+ <PropertyGroup >
191
+ <!-- Source file produced by scons lives under bin/$(GodotPlatform). Name patterns follow example.gdextension -->
192
+ <WinOutputFileName >$(ExtensionName).$(GodotPlatform).$(GodotTemplate).$(Arch).dll</WinOutputFileName >
193
+ <MacOutputFileName >lib$(ExtensionName).$(GodotPlatform).$(GodotTemplate).dylib</MacOutputFileName >
194
+ <UnixOutputFileName >lib$(ExtensionName).$(GodotPlatform).$(GodotTemplate).$(Arch).so</UnixOutputFileName >
195
+ <WebOutputWildcard >lib$(ExtensionName).$(GodotPlatform).$(GodotTemplate).$(Arch).*.*.wasm</WebOutputWildcard >
196
+ <GodotBinDir >$(MSBuildProjectDirectory)\$(GameProjectDir)\bin\$(GodotPlatform)</GodotBinDir >
197
+ <BinDir >$(MSBuildProjectDirectory)\bin\$(GodotPlatform)</BinDir >
198
+ </PropertyGroup >
199
+
200
+ <Target Name =" AfterBuild" DependsOnTargets =" Build" >
201
+ <!-- Ensure destination exists -->
202
+ <MakeDir Directories =" $(GodotBinDir)" />
203
+
204
+ <!-- Windows: copy exact file name -->
205
+ <ItemGroup Condition =" '$(GodotPlatform)' == 'windows'" >
206
+ <BuiltBinary Include =" $(BinDir)\$(WinOutputFileName)" />
207
+ </ItemGroup >
208
+
209
+ <!-- macOS: single file name without arch -->
210
+ <ItemGroup Condition =" '$(GodotPlatform)' == 'macos'" >
211
+ <BuiltBinary Include =" $(BinDir)\$(MacOutputFileName)" />
212
+ </ItemGroup >
213
+
214
+ <!-- Linux/Android: use .so name with arch -->
215
+ <ItemGroup Condition =" '$(GodotPlatform)' == 'linux' or '$(GodotPlatform)' == 'android'" >
216
+ <BuiltBinary Include =" $(BinDir)\$(UnixOutputFileName)" />
217
+ </ItemGroup >
218
+
219
+ <!-- Web: filenames include extra markers (e.g., nothreads/double). Copy all that match -->
220
+ <ItemGroup Condition =" '$(GodotPlatform)' == 'web'" >
221
+ <BuiltBinary Include =" $(BinDir)\$(WebOutputWildcard)" />
222
+ </ItemGroup >
223
+
224
+ <!-- Perform copy if items exist -->
225
+ <Copy SourceFiles =" @(BuiltBinary)" DestinationFolder =" $(GodotBinDir)" SkipUnchangedFiles =" true" Condition =" Exists('%(BuiltBinary.Identity)')" />
226
+ </Target >
227
+
228
+ <ItemGroup >
229
+ <!-- Shows currently selected output from example.gdextension in the Solution Explorer -->
230
+ <None Include =" $(GodotBinDir)/**" />
231
+ </ItemGroup >
232
+
50
233
<Import Project =" $(VCTargetsPath)/Microsoft.Cpp.targets" Condition =" $(IsWindows)" />
51
234
</Project >
0 commit comments