diff --git a/SConscript b/SConscript
index 144c71a..fda92d7 100644
--- a/SConscript
+++ b/SConscript
@@ -17,7 +17,8 @@ import uuid
class TargetType(enum.Enum):
PROGRAM = 0
- LIBRARY = 1
+ STATIC_LIBRARY = 1
+ SHARED_LIBRARY = 2
class _VersionSpec:
minimum_version = None
@@ -342,7 +343,7 @@ def _wrap_builder(builder, target_type: TargetType):
for name, version_spec in dependencies.items():
if version_spec == {}:
dep_target = _find_target(env, name)
- if dep_target is not None and dep_target.target_type == TargetType.LIBRARY:
+ if dep_target is not None and dep_target.target_type != TargetType.PROGRAM:
#if 'LIBS' in kwargs:
# kwargs['LIBS'].append(dep_target)
#else:
@@ -540,12 +541,33 @@ def _generate_project(project_type: str) -> None:
'filename': str(exe_path)
})
return result
+ def _get_libraries() -> list:
+ result = []
+ 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")}'
+ result.append({
+ 'name': target.name,
+ 'filename': str(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")}'
+ result.append({
+ 'name': target.name,
+ 'filename': str(lib_path)
+ })
+ return result
jinja_env = jinja2.Environment()
jinja_env.globals['generate_uuid'] = _generate_uuid
jinja_env.globals['project'] = {
'name': env.Dir('#').name,
'executables': _get_executables(),
+ 'libraries': _get_libraries(),
'build_types': ['debug', 'release_debug', 'release', 'profile']
}
jinja_env.globals['scons_exe'] = shutil.which('scons')
@@ -914,17 +936,17 @@ env.AddMethod(_make_interface, 'MakeInterface')
env.AddMethod(_lib_filename, 'LibFilename')
env.AddMethod(_find_lib, 'FindLib')
env.AddMethod(_error, 'Error')
-env.AddMethod(_wrap_builder(env.Library, TargetType.LIBRARY), 'Library')
-env.AddMethod(_wrap_builder(env.StaticLibrary, TargetType.LIBRARY), 'StaticLibrary')
-env.AddMethod(_wrap_builder(env.SharedLibrary, TargetType.LIBRARY), 'SharedLibrary')
+env.AddMethod(_wrap_builder(env.Library, TargetType.STATIC_LIBRARY), 'Library')
+env.AddMethod(_wrap_builder(env.StaticLibrary, TargetType.STATIC_LIBRARY), 'StaticLibrary')
+env.AddMethod(_wrap_builder(env.SharedLibrary, TargetType.SHARED_LIBRARY), 'SharedLibrary')
env.AddMethod(_wrap_builder(env.Program, TargetType.PROGRAM), 'Program')
env.AddMethod(_wrap_default(env.Default), 'Default')
env.AddMethod(_wrap_depends(env.Depends), 'Depends')
env.AddMethod(_wrap_builder(env.UnityProgram, TargetType.PROGRAM), 'UnityProgram')
-env.AddMethod(_wrap_builder(env.UnityLibrary, TargetType.LIBRARY), 'UnityLibrary')
-env.AddMethod(_wrap_builder(env.UnityStaticLibrary, TargetType.LIBRARY), 'UnityStaticLibrary')
-env.AddMethod(_wrap_builder(env.UnitySharedLibrary, TargetType.LIBRARY), 'UnitySharedLibrary')
+env.AddMethod(_wrap_builder(env.UnityLibrary, TargetType.STATIC_LIBRARY), 'UnityLibrary')
+env.AddMethod(_wrap_builder(env.UnityStaticLibrary, TargetType.STATIC_LIBRARY), 'UnityStaticLibrary')
+env.AddMethod(_wrap_builder(env.UnitySharedLibrary, TargetType.SHARED_LIBRARY), 'UnitySharedLibrary')
env.AddMethod(_module, 'Module')
env.AddMethod(_finalize, 'Finalize')
env.AddMethod(_find_target, 'FindTarget')
diff --git a/util/clion_project_template/customTargets.xml.jinja b/util/clion_project_template/customTargets.xml.jinja
index 0dfd4d1..5cc1226 100644
--- a/util/clion_project_template/customTargets.xml.jinja
+++ b/util/clion_project_template/customTargets.xml.jinja
@@ -16,5 +16,20 @@
{% endfor %}
{% endfor %}
+ {% for library in project.libraries %}
+ {% for build_type in project.build_types %}
+ {% set build_type_name = build_type | capitalize -%}
+
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+ {% endfor %}
diff --git a/util/clion_project_template/tools/External Tools.xml.jinja b/util/clion_project_template/tools/External Tools.xml.jinja
index faf4cd5..a392e3d 100644
--- a/util/clion_project_template/tools/External Tools.xml.jinja
+++ b/util/clion_project_template/tools/External Tools.xml.jinja
@@ -18,4 +18,23 @@
{% endfor %}
{% endfor %}
+ {% for library in project.libraries %}
+ {% for build_type in project.build_types %}
+ {% set build_type_name = build_type | capitalize -%}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+ {% endfor %}
diff --git a/util/clion_project_template/workspace.xml.jinja b/util/clion_project_template/workspace.xml.jinja
index 878e80a..e30f906 100644
--- a/util/clion_project_template/workspace.xml.jinja
+++ b/util/clion_project_template/workspace.xml.jinja
@@ -91,6 +91,16 @@
{% endfor -%}
{% endfor -%}
+ {% for library in project.libraries -%}
+ {% for build_type in project.build_types -%}
+ {% set build_type_name = build_type | capitalize -%}
+
+
+
+
+
+ {% endfor -%}
+ {% endfor -%}