Browse Source

[tools] add project.json generation in vsc.py. (#9632)

* [tools] fix the SDK path issue in env script.

* [tools] add project.json generation in vsc.py.

* [tools] provide correct and clear comments in vsc.py
Bernard Xiong 7 months ago
parent
commit
f8ea6c6527
1 changed files with 41 additions and 1 deletions
  1. 41 1
      tools/vsc.py

+ 41 - 1
tools/vsc.py

@@ -30,6 +30,7 @@ import os
 import json
 import utils
 import rtconfig
+
 from utils import _make_path_relative
 
 def delete_repeatelist(data):
@@ -39,7 +40,7 @@ def delete_repeatelist(data):
 
 def GenerateCFiles(env):
     """
-    Generate c_cpp_properties files
+    Generate c_cpp_properties.json and build/compile_commands.json files
     """
     if not os.path.exists('.vscode'):
         os.mkdir('.vscode')
@@ -113,8 +114,47 @@ def GenerateCFiles(env):
         vsc_space_file.close()    
     return
 
+def GenerateProjectFiles(env):
+    """
+    Generate project.json file
+    """
+    if not os.path.exists('.vscode'):
+        os.mkdir('.vscode')
+
+    project = env['project']
+    vsc_file = open('.vscode/project.json', 'w')
+    if vsc_file:
+        groups = []
+        for group in project:
+            if len(group['src']) > 0:
+                item = {}
+                item['name'] = group['name']
+                item['path'] = _make_path_relative(os.getcwd(), group['path'])
+                item['files'] = []
+
+                for fn in group['src']:
+                    item['files'].append(str(fn))
+
+                # append SConscript if exist
+                if os.path.exists(os.path.join(item['path'], 'SConscript')):
+                    item['files'].append(os.path.join(item['path'], 'SConscript'))
+
+                groups.append(item)
+
+        json_dict = {}
+        json_dict['RT-Thread'] = env['RTT_ROOT']
+        json_dict['Groups'] = groups
+
+        # write groups to project.json
+        vsc_file.write(json.dumps(json_dict, ensure_ascii=False, indent=4))
+        vsc_file.close()
+
+    return
+
 def GenerateVSCode(env):
     print('Update setting files for VSCode...')
+
+    GenerateProjectFiles(env)
     GenerateCFiles(env)
     print('Done!')