[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
This commit is contained in:
Bernard Xiong 2024-11-11 09:14:53 +08:00 committed by GitHub
parent 56c9bbe405
commit f8ea6c6527
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 41 additions and 1 deletions

View File

@ -30,6 +30,7 @@ import os
import json import json
import utils import utils
import rtconfig import rtconfig
from utils import _make_path_relative from utils import _make_path_relative
def delete_repeatelist(data): def delete_repeatelist(data):
@ -39,7 +40,7 @@ def delete_repeatelist(data):
def GenerateCFiles(env): 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'): if not os.path.exists('.vscode'):
os.mkdir('.vscode') os.mkdir('.vscode')
@ -113,8 +114,47 @@ def GenerateCFiles(env):
vsc_space_file.close() vsc_space_file.close()
return 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): def GenerateVSCode(env):
print('Update setting files for VSCode...') print('Update setting files for VSCode...')
GenerateProjectFiles(env)
GenerateCFiles(env) GenerateCFiles(env)
print('Done!') print('Done!')