66 <Keyword >MakeFileProj</Keyword >
77 <VCProjectUpgraderObjectName >NoUpgrade</VCProjectUpgraderObjectName >
88 </PropertyGroup >
9- <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug|arm64'" >
9+
10+ <!-- Windows -->
11+ <PropertyGroup Condition =" '$(Configuration)|$(Platform)'=='Debug-x86_32|windows'" >
1012 <GodotConfiguration >Debug</GodotConfiguration >
11- <GodotPlatform >arm64</GodotPlatform >
13+ <GodotPlatform >windows</GodotPlatform >
14+ <GodotTemplate >template_debug</GodotTemplate >
15+ <Arch >x86_32</Arch >
1216 </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'" >
1424 <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 >
16100 </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+
17142 <PropertyGroup >
18143 <IsWindows >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows)))</IsWindows >
19144 <IsMac >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))</IsMac >
20145 <IsLinux >$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux)))</IsLinux >
21146 </PropertyGroup >
22147 <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+
24161 <PropertyGroup Label =" Configuration" >
25162 <ConfigurationType >Makefile</ConfigurationType >
26163 <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 -->
28165 <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 >
32166 <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 >
33174 </PropertyGroup >
34175 <Import Project =" $(VCTargetsPath)/Microsoft.Cpp.props" Condition =" $(IsWindows)" />
35176 <ImportGroup Label =" ExtensionSettings" >
36177 </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')" />
40178 <ItemGroup >
41179 <ClInclude Include =" godot-cpp/**/*.h" />
42180 <ClInclude Include =" godot-cpp/**/*.hpp" />
43181 <ClInclude Include =" src/**/*.h" />
44182 <ClCompile Include =" godot-cpp/**/*.cpp" />
45183 <ClCompile Include =" src/**/*.cpp" />
46184 </ItemGroup >
185+
47186 <!-- Build/Rebuild/Clean targets for NMake are defined in MSVC, so we need to provide them, when using MSBuild without MSVC targets -->
48187 <Import Project =" $(MSBuildProjectDirectory)/targets/nmake.substitution.props" Condition =" !Exists('$(VCTargetsPath)/Microsoft.Cpp.targets')" />
49188
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+
50233 <Import Project =" $(VCTargetsPath)/Microsoft.Cpp.targets" Condition =" $(IsWindows)" />
51234</Project >
0 commit comments