@@ -1217,11 +1217,16 @@ def get_dependencies(file, env, exts, headers, sources, others):
1217
1217
properties .append (
1218
1218
"<ActiveProjectItemList_%s>;%s;</ActiveProjectItemList_%s>" % (x , ";" .join (itemlist [x ]), x )
1219
1219
)
1220
- output = f "bin\\ godot{ env ['PROGSUFFIX' ]} "
1220
+ output = os . path . join ( "bin" , f" godot{ env ['PROGSUFFIX' ]} ")
1221
1221
1222
1222
with open ("misc/msvs/props.template" , "r" , encoding = "utf-8" ) as file :
1223
1223
props_template = file .read ()
1224
1224
1225
+ toolset = "v143"
1226
+ if not env .msvc :
1227
+ toolset = "CLang"
1228
+ props_template = props_template .replace ("%%PlatformToolset%%" , toolset )
1229
+
1225
1230
props_template = props_template .replace ("%%VSCONF%%" , vsconf )
1226
1231
props_template = props_template .replace ("%%CONDITION%%" , condition )
1227
1232
props_template = props_template .replace ("%%PROPERTIES%%" , "\n " .join (properties ))
@@ -1235,6 +1240,7 @@ def get_dependencies(file, env, exts, headers, sources, others):
1235
1240
1236
1241
proplist = [str (j ) for j in env ["CPPPATH" ]]
1237
1242
proplist += [str (j ) for j in env .get ("VSHINT_INCLUDES" , [])]
1243
+ proplist += [str (j ) for j in get_default_include_paths (env )]
1238
1244
props_template = props_template .replace ("%%INCLUDES%%" , ";" .join (proplist ))
1239
1245
1240
1246
proplist = env ["CCFLAGS" ]
@@ -1270,17 +1276,17 @@ def get_dependencies(file, env, exts, headers, sources, others):
1270
1276
1271
1277
commands = "scons"
1272
1278
if len (common_build_prefix ) == 0 :
1273
- commands = "echo Starting SCons && cmd /V /C " + commands
1279
+ commands = "echo Starting SCons &" + commands
1274
1280
else :
1275
- common_build_prefix [0 ] = "echo Starting SCons && cmd /V /C " + common_build_prefix [0 ]
1281
+ common_build_prefix [0 ] = "echo Starting SCons &" + common_build_prefix [0 ]
1276
1282
1277
- cmd = " ^& " .join (common_build_prefix + [" " .join ([commands ] + common_build_postfix )])
1283
+ cmd = " " .join (common_build_prefix + [" " .join ([commands ] + common_build_postfix )])
1278
1284
props_template = props_template .replace ("%%BUILD%%" , cmd )
1279
1285
1280
- cmd = " ^& " .join (common_build_prefix + [" " .join ([commands ] + cmd_rebuild )])
1286
+ cmd = " " .join (common_build_prefix + [" " .join ([commands ] + cmd_rebuild )])
1281
1287
props_template = props_template .replace ("%%REBUILD%%" , cmd )
1282
1288
1283
- cmd = " ^& " .join (common_build_prefix + [" " .join ([commands ] + cmd_clean )])
1289
+ cmd = " " .join (common_build_prefix + [" " .join ([commands ] + cmd_clean )])
1284
1290
props_template = props_template .replace ("%%CLEAN%%" , cmd )
1285
1291
1286
1292
with open (
@@ -1554,3 +1560,15 @@ def to_raw_cstring(value: Union[str, List[str]]) -> str:
1554
1560
split += [segment ]
1555
1561
1556
1562
return " " .join (f'R"<!>({ x .decode ()} )<!>"' for x in split )
1563
+
1564
+
1565
+ def get_default_include_paths (env ):
1566
+ compiler = env .subst ("$CXX" )
1567
+ target = os .path .join (env .Dir ("#main" ).abspath , "main.cpp" )
1568
+ args = [compiler , target , "-x" , "c++" , "-v" ]
1569
+ ret = subprocess .run (args , stdout = subprocess .PIPE , stderr = subprocess .STDOUT , text = True )
1570
+ output = ret .stdout
1571
+ match = re .search (r"#include <\.\.\.> search starts here:([\S\s]*)End of search list." , output )
1572
+ if not match :
1573
+ return [] # msvc case
1574
+ return [x .strip () for x in match [1 ].strip ().splitlines ()]
0 commit comments