diff --git a/methods.py b/methods.py
index c22b1f11e46..13b06ad527f 100644
--- a/methods.py
+++ b/methods.py
@@ -1380,14 +1380,18 @@ def generate_vs_project(env, original_args, project_name="godot"):
props_template = props_template.replace("%%OUTPUT%%", output)
- props_template = props_template.replace(
- "%%DEFINES%%", ";".join([format_key_value(v) for v in list(env["CPPDEFINES"])])
- )
- props_template = props_template.replace("%%INCLUDES%%", ";".join([str(j) for j in env["CPPPATH"]]))
- props_template = props_template.replace(
- "%%OPTIONS%%",
- " ".join(env["CCFLAGS"]) + " " + " ".join([x for x in env["CXXFLAGS"] if not x.startswith("$")]),
- )
+ proplist = [format_key_value(v) for v in list(env["CPPDEFINES"])]
+ proplist += [format_key_value(j) for j in env.get("VSHINT_DEFINES", [])]
+ props_template = props_template.replace("%%DEFINES%%", ";".join(proplist))
+
+ proplist = [str(j) for j in env["CPPPATH"]]
+ proplist += [str(j) for j in env.get("VSHINT_INCLUDES", [])]
+ props_template = props_template.replace("%%INCLUDES%%", ";".join(proplist))
+
+ proplist = env["CCFLAGS"]
+ proplist += [x for x in env["CXXFLAGS"] if not x.startswith("$")]
+ proplist += [str(j) for j in env.get("VSHINT_OPTIONS", [])]
+ props_template = props_template.replace("%%OPTIONS%%", " ".join(proplist))
# Windows allows us to have spaces in paths, so we need
# to double quote off the directory. However, the path ends
diff --git a/misc/msvs/props.template b/misc/msvs/props.template
index 9ecd49a25ee..9717c58ba0e 100644
--- a/misc/msvs/props.template
+++ b/misc/msvs/props.template
@@ -4,13 +4,13 @@
%%BUILD%%
%%REBUILD%%
%%CLEAN%%
- %%OUTPUT%%
- %%DEFINES%%
- %%INCLUDES%%
+ %%OUTPUT%%
+ %%DEFINES%%;$(NMakePreprocessorDefinitions)
+ %%INCLUDES%%;$(NMakeIncludeSearchPath)
$(NMakeForcedIncludes)
$(NMakeAssemblySearchPath)
$(NMakeForcedUsingAssemblies)
- %%OPTIONS%%
+ %%OPTIONS%% $(AdditionalOptions)
%%PROPERTIES%%