|
30 | 30 | import json |
31 | 31 | import utils |
32 | 32 | import rtconfig |
| 33 | +from SCons.Script import * |
33 | 34 |
|
34 | 35 | from utils import _make_path_relative |
35 | 36 | def find_first_node_with_two_children(tree): |
@@ -216,14 +217,14 @@ def GenerateCFiles(env): |
216 | 217 | cc = os.path.abspath(cc).replace('\\', '/') |
217 | 218 |
|
218 | 219 | config_obj = {} |
219 | | - config_obj['name'] = 'rt-thread' |
| 220 | + config_obj['name'] = 'Linux' |
220 | 221 | config_obj['defines'] = info['CPPDEFINES'] |
221 | 222 |
|
222 | | - intelliSenseMode = 'gcc-arm' |
| 223 | + intelliSenseMode = 'linux-gcc-arm' |
223 | 224 | if cc.find('aarch64') != -1: |
224 | | - intelliSenseMode = 'gcc-arm64' |
| 225 | + intelliSenseMode = 'linux-gcc-arm64' |
225 | 226 | elif cc.find('arm') != -1: |
226 | | - intelliSenseMode = 'gcc-arm' |
| 227 | + intelliSenseMode = 'linux-gcc-arm' |
227 | 228 | config_obj['intelliSenseMode'] = intelliSenseMode |
228 | 229 | config_obj['compilerPath'] = cc |
229 | 230 | config_obj['cStandard'] = "c99" |
@@ -338,3 +339,58 @@ def GenerateVSCode(env): |
338 | 339 | print('Done!') |
339 | 340 |
|
340 | 341 | return |
| 342 | + |
| 343 | +def GenerateVSCodeWorkspace(env): |
| 344 | + """ |
| 345 | + Generate vscode.code files |
| 346 | + """ |
| 347 | + print('Update workspace files for VSCode...') |
| 348 | + |
| 349 | + # get the launch directory |
| 350 | + cwd = GetLaunchDir() |
| 351 | + |
| 352 | + # check if .vscode folder exists, if not, create it |
| 353 | + if not os.path.exists(os.path.join(cwd, '.vscode')): |
| 354 | + os.mkdir(os.path.join(cwd, '.vscode')) |
| 355 | + |
| 356 | + vsc_file = open(os.path.join(cwd, '.vscode/c_cpp_properties.json'), 'w') |
| 357 | + if vsc_file: |
| 358 | + info = utils.ProjectInfo(env) |
| 359 | + |
| 360 | + cc = os.path.join(rtconfig.EXEC_PATH, rtconfig.CC) |
| 361 | + cc = os.path.abspath(cc).replace('\\', '/') |
| 362 | + |
| 363 | + config_obj = {} |
| 364 | + config_obj['name'] = 'Linux' |
| 365 | + config_obj['defines'] = info['CPPDEFINES'] |
| 366 | + |
| 367 | + intelliSenseMode = 'linux-gcc-arm' |
| 368 | + if cc.find('aarch64') != -1: |
| 369 | + intelliSenseMode = 'linux-gcc-arm64' |
| 370 | + elif cc.find('arm') != -1: |
| 371 | + intelliSenseMode = 'linux-gcc-arm' |
| 372 | + config_obj['intelliSenseMode'] = intelliSenseMode |
| 373 | + config_obj['compilerPath'] = cc |
| 374 | + config_obj['cStandard'] = "c99" |
| 375 | + config_obj['cppStandard'] = "c++11" |
| 376 | + |
| 377 | + # format "a/b," to a/b. remove first quotation mark("),and remove end (",) |
| 378 | + includePath = [] |
| 379 | + for i in info['CPPPATH']: |
| 380 | + if i[0] == '\"' and i[len(i) - 2:len(i)] == '\",': |
| 381 | + includePath.append(_make_path_relative(cwd, i[1:len(i) - 2])) |
| 382 | + else: |
| 383 | + includePath.append(_make_path_relative(cwd, i)) |
| 384 | + # make sort for includePath |
| 385 | + includePath = sorted(includePath, key=lambda x: x.lower()) |
| 386 | + config_obj['includePath'] = includePath |
| 387 | + |
| 388 | + json_obj = {} |
| 389 | + json_obj['configurations'] = [config_obj] |
| 390 | + |
| 391 | + vsc_file.write(json.dumps(json_obj, ensure_ascii=False, indent=4)) |
| 392 | + vsc_file.close() |
| 393 | + |
| 394 | + print('Done!') |
| 395 | + |
| 396 | + return |
0 commit comments