summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2024-11-11 09:14:53 +0800
committerGitHub <[email protected]>2024-11-11 09:14:53 +0800
commitf8ea6c652744b71aabfa3016792501f5c43b958b (patch)
tree27635a397ec2201fda7e489e11de1acd0b17f251
parent56c9bbe405920652978a76be6274268aa7dd491c (diff)
[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
-rw-r--r--tools/vsc.py42
1 files changed, 41 insertions, 1 deletions
diff --git a/tools/vsc.py b/tools/vsc.py
index bbb0debc6c..7d23f17958 100644
--- a/tools/vsc.py
+++ b/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!')