diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-09-27 18:21:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-27 18:21:25 +0200 |
commit | 72ab8ae0583ca9cf6c477a8c84eadd2b83991d02 (patch) | |
tree | 9ce4ccc952333b138ad5df1e426a9d821c488c37 /methods.py | |
parent | 1a43f55c0763e7961902b21880f918b11e3091b9 (diff) | |
parent | 317c2b194d2a44f67f3cf42e5bb088343acfe033 (diff) |
Merge pull request #42352 from Pineapple/add-all-headers-vs
Add all headers to Visual Studio Project
Diffstat (limited to 'methods.py')
-rw-r--r-- | methods.py | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/methods.py b/methods.py index 555d9fa594..f7134b472b 100644 --- a/methods.py +++ b/methods.py @@ -7,6 +7,8 @@ from collections import OrderedDict # We need to define our own `Action` method to control the verbosity of output # and whenever we need to run those commands in a subprocess on some platforms. from SCons.Script import Action +from SCons import Node +from SCons.Script import Glob from platform_methods import run_in_subprocess @@ -526,6 +528,35 @@ def generate_cpp_hint_file(filename): print("Could not write cpp.hint file.") +def glob_recursive(pattern, node="."): + results = [] + for f in Glob(str(node) + "/*", source=True): + if type(f) is Node.FS.Dir: + results += glob_recursive(pattern, f) + results += Glob(str(node) + "/" + pattern, source=True) + return results + + +def add_to_vs_project(env, sources): + for x in sources: + if type(x) == type(""): + fname = env.File(x).path + else: + fname = env.File(x)[0].path + pieces = fname.split(".") + if len(pieces) > 0: + basename = pieces[0] + basename = basename.replace("\\\\", "/") + if os.path.isfile(basename + ".h"): + env.vs_incs += [basename + ".h"] + elif os.path.isfile(basename + ".hpp"): + env.vs_incs += [basename + ".hpp"] + if os.path.isfile(basename + ".c"): + env.vs_srcs += [basename + ".c"] + elif os.path.isfile(basename + ".cpp"): + env.vs_srcs += [basename + ".cpp"] + + def generate_vs_project(env, num_jobs): batch_file = find_visual_c_batch_file(env) if batch_file: @@ -558,12 +589,16 @@ def generate_vs_project(env, num_jobs): result = " ^& ".join(common_build_prefix + [" ".join([commands] + common_build_postfix)]) return result - env.AddToVSProject(env.core_sources) - env.AddToVSProject(env.main_sources) - env.AddToVSProject(env.modules_sources) - env.AddToVSProject(env.scene_sources) - env.AddToVSProject(env.servers_sources) - env.AddToVSProject(env.editor_sources) + add_to_vs_project(env, env.core_sources) + add_to_vs_project(env, env.drivers_sources) + add_to_vs_project(env, env.main_sources) + add_to_vs_project(env, env.modules_sources) + add_to_vs_project(env, env.scene_sources) + add_to_vs_project(env, env.servers_sources) + add_to_vs_project(env, env.editor_sources) + + for header in glob_recursive("**/*.h"): + env.vs_incs.append(str(header)) env["MSVSBUILDCOM"] = build_commandline("scons") env["MSVSREBUILDCOM"] = build_commandline("scons vsproj=yes") |