Updated to include build type and variant in binary names, so they don't need to be rebuilt everytime the configuration is changed.
This commit is contained in:
parent
1edf745b39
commit
e6e7dbe642
34
SConscript
34
SConscript
@ -570,11 +570,13 @@ def _generate_project(project_type: str) -> None:
|
|||||||
for target in env['SPP_TARGETS']:
|
for target in env['SPP_TARGETS']:
|
||||||
if target.target_type == TargetType.PROGRAM:
|
if target.target_type == TargetType.PROGRAM:
|
||||||
trgt = _target_entry(target.kwargs['target'])
|
trgt = _target_entry(target.kwargs['target'])
|
||||||
|
def _exe_path(build_type) -> str:
|
||||||
exe_path = pathlib.Path(trgt.abspath).relative_to(root_path)
|
exe_path = pathlib.Path(trgt.abspath).relative_to(root_path)
|
||||||
exe_path = exe_path.parent / f'{env["PROGPREFIX"]}{exe_path.name}{env["PROGSUFFIX"]}'
|
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({
|
result.append({
|
||||||
'name': target.name,
|
'name': target.name,
|
||||||
'filename': str(exe_path)
|
'filename': _exe_path
|
||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
def _get_libraries() -> list:
|
def _get_libraries() -> list:
|
||||||
@ -582,19 +584,23 @@ def _generate_project(project_type: str) -> None:
|
|||||||
for target in env['SPP_TARGETS']:
|
for target in env['SPP_TARGETS']:
|
||||||
if target.target_type == TargetType.STATIC_LIBRARY:
|
if target.target_type == TargetType.STATIC_LIBRARY:
|
||||||
trgt = _target_entry(target.kwargs['target'])
|
trgt = _target_entry(target.kwargs['target'])
|
||||||
|
def _lib_path(build_type) -> str:
|
||||||
lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
|
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")}'
|
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({
|
result.append({
|
||||||
'name': target.name,
|
'name': target.name,
|
||||||
'filename': str(lib_path)
|
'filename': _lib_path
|
||||||
})
|
})
|
||||||
elif target.target_type == TargetType.SHARED_LIBRARY:
|
elif target.target_type == TargetType.SHARED_LIBRARY:
|
||||||
trgt = _target_entry(target.kwargs['target'])
|
trgt = _target_entry(target.kwargs['target'])
|
||||||
|
def _lib_path(build_type) -> str:
|
||||||
lib_path = pathlib.Path(trgt.abspath).relative_to(root_path)
|
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")}'
|
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({
|
result.append({
|
||||||
'name': target.name,
|
'name': target.name,
|
||||||
'filename': str(lib_path)
|
'filename': _lib_path
|
||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
def _escape_path(input: str) -> str:
|
def _escape_path(input: str) -> str:
|
||||||
@ -837,9 +843,19 @@ env['SPP_TARGET_DEPENDENCIES'] = []
|
|||||||
env['SPP_DEPENDENCIES'] = {}
|
env['SPP_DEPENDENCIES'] = {}
|
||||||
env['SPP_RECIPES'] = {}
|
env['SPP_RECIPES'] = {}
|
||||||
|
|
||||||
env['OBJSUFFIX'] = f".{env['BUILD_TYPE']}{env['OBJSUFFIX']}"
|
def _make_suffix(orig: str, build_type: str, variant: str|None = None) -> str:
|
||||||
if variant:
|
add_to_suffix = f".{build_type}"
|
||||||
env['OBJSUFFIX'] = f".{variant}{env['OBJSUFFIX']}"
|
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
|
# create the cache dir
|
||||||
os.makedirs(env['CACHE_DIR'], exist_ok=True)
|
os.makedirs(env['CACHE_DIR'], exist_ok=True)
|
||||||
|
@ -5,14 +5,14 @@
|
|||||||
<tool name="{{ executable.name }} {{ build_type_name }}" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
<tool name="{{ executable.name }} {{ build_type_name }}" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||||
<exec>
|
<exec>
|
||||||
<option name="COMMAND" value="{{ scons_exe }}" />
|
<option name="COMMAND" value="{{ scons_exe }}" />
|
||||||
<option name="PARAMETERS" value="-j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ executable.filename }} compile_commands.json" />
|
<option name="PARAMETERS" value="-j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ executable.filename(build_type) }} compile_commands.json" />
|
||||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||||
</exec>
|
</exec>
|
||||||
</tool>
|
</tool>
|
||||||
<tool name="{{ executable.name }} {{ build_type_name }} Clean" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
<tool name="{{ executable.name }} {{ build_type_name }} Clean" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||||
<exec>
|
<exec>
|
||||||
<option name="COMMAND" value="{{ scons_exe }}" />
|
<option name="COMMAND" value="{{ scons_exe }}" />
|
||||||
<option name="PARAMETERS" value="--build_type={{ build_type }} --unity=disable {{ executable.filename }} -c" />
|
<option name="PARAMETERS" value="--build_type={{ build_type }} --unity=disable {{ executable.filename(build_type) }} -c" />
|
||||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||||
</exec>
|
</exec>
|
||||||
</tool>
|
</tool>
|
||||||
@ -24,14 +24,14 @@
|
|||||||
<tool name="{{ library.name }} {{ build_type_name }}" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
<tool name="{{ library.name }} {{ build_type_name }}" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||||
<exec>
|
<exec>
|
||||||
<option name="COMMAND" value="{{ scons_exe }}" />
|
<option name="COMMAND" value="{{ scons_exe }}" />
|
||||||
<option name="PARAMETERS" value="-j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ library.filename }} compile_commands.json" />
|
<option name="PARAMETERS" value="-j{{ nproc }} --build_type={{ build_type }} --unity=disable {{ library.filename(build_type) }} compile_commands.json" />
|
||||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||||
</exec>
|
</exec>
|
||||||
</tool>
|
</tool>
|
||||||
<tool name="{{ library.name }} {{ build_type_name }} Clean" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
<tool name="{{ library.name }} {{ build_type_name }} Clean" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
|
||||||
<exec>
|
<exec>
|
||||||
<option name="COMMAND" value="{{ scons_exe }}" />
|
<option name="COMMAND" value="{{ scons_exe }}" />
|
||||||
<option name="PARAMETERS" value="--build_type={{ build_type }} --unity=disable {{ library.filename }} -c" />
|
<option name="PARAMETERS" value="--build_type={{ build_type }} --unity=disable {{ library.filename(build_type) }} -c" />
|
||||||
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
|
||||||
</exec>
|
</exec>
|
||||||
</tool>
|
</tool>
|
||||||
|
@ -84,7 +84,7 @@
|
|||||||
{% for executable in project.executables -%}
|
{% for executable in project.executables -%}
|
||||||
{% for build_type in project.build_types -%}
|
{% for build_type in project.build_types -%}
|
||||||
{% set build_type_name = build_type | capitalize -%}
|
{% set build_type_name = build_type | capitalize -%}
|
||||||
<configuration name="{{ executable.name }} {{ build_type_name }}" type="CLionExternalRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="{{ project.name }}" TARGET_NAME="{{ executable.name }} {{ build_type_name }}" CONFIG_NAME="{{ executable.name }} {{ build_type_name }}" RUN_PATH="$PROJECT_DIR$/{{ executable.filename }}">
|
<configuration name="{{ executable.name }} {{ build_type_name }}" type="CLionExternalRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" PASS_PARENT_ENVS_2="true" PROJECT_NAME="{{ project.name }}" TARGET_NAME="{{ executable.name }} {{ build_type_name }}" CONFIG_NAME="{{ executable.name }} {{ build_type_name }}" RUN_PATH="$PROJECT_DIR$/{{ executable.filename(build_type) }}">
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
<option name="CLION.EXTERNAL.BUILD" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"name": "Debug {{ executable.name }}",
|
"name": "Debug {{ executable.name }}",
|
||||||
"type": "cppvsdbg",
|
"type": "cppvsdbg",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "{{ executable.filename | escape_path }}",
|
"program": "{{ executable.filename(build_type) | escape_path }}",
|
||||||
"args": [],
|
"args": [],
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
{
|
{
|
||||||
"label": "{{ executable.name }} {{ build_type_name }}",
|
"label": "{{ executable.name }} {{ build_type_name }}",
|
||||||
"type": "shell",
|
"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": {
|
"options": {
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
},
|
},
|
||||||
@ -22,7 +22,7 @@
|
|||||||
{
|
{
|
||||||
"label": "{{ executable.name }} {{ build_type_name }} Clean",
|
"label": "{{ executable.name }} {{ build_type_name }} Clean",
|
||||||
"type": "shell",
|
"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": {
|
"options": {
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
},
|
},
|
||||||
@ -40,7 +40,7 @@
|
|||||||
{
|
{
|
||||||
"label": "{{ library.name }} {{ build_type_name }}",
|
"label": "{{ library.name }} {{ build_type_name }}",
|
||||||
"type": "shell",
|
"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": {
|
"options": {
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
},
|
},
|
||||||
@ -53,7 +53,7 @@
|
|||||||
{
|
{
|
||||||
"label": "{{ library.name }} {{ build_type_name }} Clean",
|
"label": "{{ library.name }} {{ build_type_name }} Clean",
|
||||||
"type": "shell",
|
"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": {
|
"options": {
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user