Added project template for VSCode (only Windows for now).
This commit is contained in:
parent
283aa0f99c
commit
0bec9f7062
@ -532,7 +532,8 @@ def _target_entry(target_value):
|
|||||||
|
|
||||||
def _generate_project(project_type: str) -> None:
|
def _generate_project(project_type: str) -> None:
|
||||||
source_folder, target_folder = {
|
source_folder, target_folder = {
|
||||||
'clion': (os.path.join(_spp_dir.abspath, 'util', 'clion_project_template'), Dir('#.idea').abspath)
|
'clion': (os.path.join(_spp_dir.abspath, 'util', 'clion_project_template'), Dir('#.idea').abspath),
|
||||||
|
'vscode': (os.path.join(_spp_dir.abspath, 'util', 'vscode_project_template'), Dir('#.vscode').abspath)
|
||||||
}.get(project_type, (None, None))
|
}.get(project_type, (None, None))
|
||||||
if not source_folder:
|
if not source_folder:
|
||||||
_error(None, 'Invalid project type option.')
|
_error(None, 'Invalid project type option.')
|
||||||
@ -590,6 +591,8 @@ def _generate_project(project_type: str) -> None:
|
|||||||
'filename': str(lib_path)
|
'filename': str(lib_path)
|
||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
|
def _escape_path(input: str) -> str:
|
||||||
|
return input.replace('\\', '\\\\')
|
||||||
|
|
||||||
jinja_env = jinja2.Environment()
|
jinja_env = jinja2.Environment()
|
||||||
jinja_env.globals['generate_uuid'] = _generate_uuid
|
jinja_env.globals['generate_uuid'] = _generate_uuid
|
||||||
@ -602,6 +605,8 @@ def _generate_project(project_type: str) -> None:
|
|||||||
jinja_env.globals['scons_exe'] = shutil.which('scons')
|
jinja_env.globals['scons_exe'] = shutil.which('scons')
|
||||||
jinja_env.globals['nproc'] = multiprocessing.cpu_count()
|
jinja_env.globals['nproc'] = multiprocessing.cpu_count()
|
||||||
|
|
||||||
|
jinja_env.filters['escape_path'] = _escape_path
|
||||||
|
|
||||||
source_path = pathlib.Path(source_folder)
|
source_path = pathlib.Path(source_folder)
|
||||||
target_path = pathlib.Path(target_folder)
|
target_path = pathlib.Path(target_folder)
|
||||||
|
|
||||||
@ -712,7 +717,7 @@ AddOption(
|
|||||||
'--generate_project',
|
'--generate_project',
|
||||||
dest = 'generate_project',
|
dest = 'generate_project',
|
||||||
type = 'choice',
|
type = 'choice',
|
||||||
choices = ('clion',),
|
choices = ('clion', 'vscode'),
|
||||||
nargs = 1,
|
nargs = 1,
|
||||||
action = 'store'
|
action = 'store'
|
||||||
)
|
)
|
||||||
|
6
util/vscode_project_template/extensions.json
Normal file
6
util/vscode_project_template/extensions.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"ms-vscode.cpptools",
|
||||||
|
"llvm-vs-code-extensions.vscode-clangd"
|
||||||
|
]
|
||||||
|
}
|
18
util/vscode_project_template/launch.json.jinja
Normal file
18
util/vscode_project_template/launch.json.jinja
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{% for executable in project.executables %}
|
||||||
|
{% set build_type_name = build_type | capitalize -%}
|
||||||
|
{
|
||||||
|
"name": "Debug {{ executable.name }}",
|
||||||
|
"type": "cppvsdbg",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "{{ executable.filename | escape_path }}",
|
||||||
|
"args": [],
|
||||||
|
"stopAtEntry": false,
|
||||||
|
"cwd": "${workspaceFolder}",
|
||||||
|
"environment": [],
|
||||||
|
"console": "integratedTerminal"
|
||||||
|
}
|
||||||
|
{% endfor %}
|
||||||
|
]
|
||||||
|
}
|
69
util/vscode_project_template/tasks.json.jinja
Normal file
69
util/vscode_project_template/tasks.json.jinja
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
|
// for the documentation about the tasks.json format
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{% for executable in project.executables %}
|
||||||
|
{% for build_type in project.build_types %}
|
||||||
|
{% set build_type_name = build_type | capitalize -%}
|
||||||
|
{
|
||||||
|
"label": "{{ executable.name }} {{ build_type_name }}",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "{{ scons_exe | escape_path }} -j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ executable.filename | escape_path }} compile_commands.json",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
"problemMatcher": [],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "{{ executable.name }} {{ build_type_name }} Clean",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "{{ scons_exe | escape_path }} --build_type={{ build_type }} --unity=disable {{ executable.filename | escape_path }} -c",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
"problemMatcher": [],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
{% for library in project.libraries %}
|
||||||
|
{% for build_type in project.build_types %}
|
||||||
|
{% set build_type_name = build_type | capitalize -%}
|
||||||
|
{
|
||||||
|
"label": "{{ library.name }} {{ build_type_name }}",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "{{ scons_exe | escape_path }} -j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ library.filename | escape_path }} compile_commands.json",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
"problemMatcher": [],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "{{ library.name }} {{ build_type_name }} Clean",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "{{ scons_exe | escape_path }} --build_type={{ build_type }} --unity=disable {{ library.filename | escape_path }} -c",
|
||||||
|
"options": {
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
"problemMatcher": [],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
]
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user