diff --git a/SConscript b/SConscript
index 08a3c30..ee4bec6 100644
--- a/SConscript
+++ b/SConscript
@@ -570,11 +570,13 @@ def _generate_project(project_type: str) -> None:
for target in env['SPP_TARGETS']:
if target.target_type == TargetType.PROGRAM:
trgt = _target_entry(target.kwargs['target'])
- exe_path = pathlib.Path(trgt.abspath).relative_to(root_path)
- exe_path = exe_path.parent / f'{env["PROGPREFIX"]}{exe_path.name}{env["PROGSUFFIX"]}'
+ def _exe_path(build_type) -> str:
+ exe_path = pathlib.Path(trgt.abspath).relative_to(root_path)
+ exe_path = exe_path.parent / f'{env.subst("$PROGPREFIX")}{exe_path.name}{_make_suffix(env.subst("$ORIG_PROGSUFFIX"), build_type, variant)}'
+ return str(exe_path)
result.append({
'name': target.name,
- 'filename': str(exe_path)
+ 'filename': _exe_path
})
return result
def _get_libraries() -> list:
@@ -582,19 +584,23 @@ def _generate_project(project_type: str) -> None:
for target in env['SPP_TARGETS']:
if target.target_type == TargetType.STATIC_LIBRARY:
trgt = _target_entry(target.kwargs['target'])
- lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
- lib_path = lib_path.parent / f'{env.subst("$LIBPREFIX")}{lib_path.name}{env.subst("$LIBSUFFIX")}'
+ def _lib_path(build_type) -> str:
+ lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
+ lib_path = lib_path.parent / f'{env.subst("$LIBPREFIX")}{lib_path.name}{_make_suffix(env.subst("ORIG_$LIBSUFFIX"), build_type, variant)}'
+ return str(lib_path)
result.append({
'name': target.name,
- 'filename': str(lib_path)
+ 'filename': _lib_path
})
elif target.target_type == TargetType.SHARED_LIBRARY:
trgt = _target_entry(target.kwargs['target'])
- lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
- lib_path = lib_path.parent / f'{env.subst("$SHLIBPREFIX")}{lib_path.name}{env.subst("$SHLIBSUFFIX")}'
+ def _lib_path(build_type) -> str:
+ lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
+ lib_path = lib_path.parent / f'{env.subst("$SHLIBPREFIX")}{lib_path.name}{_make_suffix(env.subst("ORIG_$SHLIBSUFFIX"), build_type, variant)}'
+ return str(lib_path)
result.append({
'name': target.name,
- 'filename': str(lib_path)
+ 'filename': _lib_path
})
return result
def _escape_path(input: str) -> str:
@@ -837,9 +843,19 @@ env['SPP_TARGET_DEPENDENCIES'] = []
env['SPP_DEPENDENCIES'] = {}
env['SPP_RECIPES'] = {}
-env['OBJSUFFIX'] = f".{env['BUILD_TYPE']}{env['OBJSUFFIX']}"
-if variant:
- env['OBJSUFFIX'] = f".{variant}{env['OBJSUFFIX']}"
+def _make_suffix(orig: str, build_type: str, variant: str|None = None) -> str:
+ add_to_suffix = f".{build_type}"
+ if variant:
+ add_to_suffix = f".{variant}{add_to_suffix}"
+ return add_to_suffix + orig
+env['ORIG_LIBSUFFIX'] = env['LIBSUFFIX']
+env['ORIG_OBJSUFFIX'] = env['OBJSUFFIX']
+env['ORIG_PROGSUFFIX'] = env['PROGSUFFIX']
+env['ORIG_SHLIBSUFFIX'] = env['SHLIBSUFFIX']
+env['LIBSUFFIX'] = _make_suffix(env['LIBSUFFIX'], env['BUILD_TYPE'], variant)
+env['OBJSUFFIX'] = _make_suffix(env['OBJSUFFIX'], env['BUILD_TYPE'], variant)
+env['PROGSUFFIX'] = _make_suffix(env['PROGSUFFIX'], env['BUILD_TYPE'], variant)
+env['SHLIBSUFFIX'] = _make_suffix(env['SHLIBSUFFIX'], env['BUILD_TYPE'], variant)
# create the cache dir
os.makedirs(env['CACHE_DIR'], exist_ok=True)
diff --git a/util/clion_project_template/tools/External Tools.xml.jinja b/util/clion_project_template/tools/External Tools.xml.jinja
index a392e3d..55893d5 100644
--- a/util/clion_project_template/tools/External Tools.xml.jinja
+++ b/util/clion_project_template/tools/External Tools.xml.jinja
@@ -5,14 +5,14 @@
-
+
-
+
@@ -24,14 +24,14 @@
-
+
-
+
diff --git a/util/clion_project_template/workspace.xml.jinja b/util/clion_project_template/workspace.xml.jinja
index e30f906..3e603a3 100644
--- a/util/clion_project_template/workspace.xml.jinja
+++ b/util/clion_project_template/workspace.xml.jinja
@@ -84,7 +84,7 @@
{% for executable in project.executables -%}
{% for build_type in project.build_types -%}
{% set build_type_name = build_type | capitalize -%}
-
+
diff --git a/util/vscode_project_template/launch.json.jinja b/util/vscode_project_template/launch.json.jinja
index fd623b0..ae8ced0 100644
--- a/util/vscode_project_template/launch.json.jinja
+++ b/util/vscode_project_template/launch.json.jinja
@@ -6,7 +6,7 @@
"name": "Debug {{ executable.name }}",
"type": "cppvsdbg",
"request": "launch",
- "program": "{{ executable.filename | escape_path }}",
+ "program": "{{ executable.filename(build_type) | escape_path }}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
diff --git a/util/vscode_project_template/tasks.json.jinja b/util/vscode_project_template/tasks.json.jinja
index f753166..db85d6a 100644
--- a/util/vscode_project_template/tasks.json.jinja
+++ b/util/vscode_project_template/tasks.json.jinja
@@ -9,7 +9,7 @@
{
"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",
+ "command": "{{ scons_exe | escape_path }} -j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ executable.filename(build_type) | escape_path }} compile_commands.json",
"options": {
"cwd": "${workspaceFolder}"
},
@@ -22,7 +22,7 @@
{
"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",
+ "command": "{{ scons_exe | escape_path }} --build_type={{ build_type }} --unity=disable {{ executable.filename(build_type) | escape_path }} -c",
"options": {
"cwd": "${workspaceFolder}"
},
@@ -40,7 +40,7 @@
{
"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",
+ "command": "{{ scons_exe | escape_path }} -j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ library.filename(build_type) | escape_path }} compile_commands.json",
"options": {
"cwd": "${workspaceFolder}"
},
@@ -53,7 +53,7 @@
{
"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",
+ "command": "{{ scons_exe | escape_path }} --build_type={{ build_type }} --unity=disable {{ library.filename(build_type) | escape_path }} -c",
"options": {
"cwd": "${workspaceFolder}"
},