Savant
Python Computer Vision & Video Analytics Framework With Batteries Included
File Explorer
Download Latest Version (.zip)- devcontainer.json
- devcontainer.json
- action.yml
- build-package-release.yml
- main.yml
- always_on_rtsp_frame_processor.py
- always_on_rtsp_frame_sink.py
- savant_rs_video_player.py
- __init__.py
- __main__.py
- main.py
- __init__.py
- __main__.py
- api.py
- app_config.py
- config.py
- encoder_builder.py
- input_pipeline.py
- last_frame.py
- mediamtx.yml
- output_pipeline.py
- pipeline.py
- stream_manager.py
- timestamp_overlay.py
- utils.py
- zeromq_proxy.py
- __init__.py
- __main__.py
- display.sh
- adjust_timestamps.py
- ffmpeg_src.py
- fps_meter.py
- media_files_src_bin.py
- savant_parse_bin.py
- set_dts.py
- shift_timestamps.py
- zeromq_sink.py
- kvs_log_configuration.template
- multistream_kvs.py
- video_files.py
- video_files.sh
- __init__.py
- __main__.py
- api.py
- config.py
- pipeline.py
- poller.py
- state.py
- stream_manager.py
- stream_model.py
- ffmpeg.sh
- gige_cam.sh
- media_files.sh
- multi_stream.sh
- rtsp.sh
- video_loop.sh
- buffer.py
- kafka_redis.py
- chunk_writer.py
- image_files.py
- kafka_redis.py
- metadata_json.py
- kafka_redis.py
- message_dump_player.py
- __init__.py
- thread.py
- utils.sh
- __init__.py
- requirements-ds.txt
- requirements-gst.txt
- requirements-py.txt
- requirements.txt
- savant_inception_member.png
- benchmark.py
- logo.png
- run_benchmarks.sh
- Dockerfile.adapters-gstreamer
- Dockerfile.adapters-py
- Dockerfile.deepstream
- Dockerfile.deepstream-opencv
- repo_link.py
- custom.css
- 01-creating-project.png
- 02-setup-python-interpreter.png
- 03-setup-python-interpreter-docker-compose-module.png
- 04-setup-interpreter-in-docker.png
- 05-check-savant-package.png
- 06-check-func-spec.png
- 07-open-run-config.png
- 08-run-config-module.png
- 09-run-config-client.png
- 10-run-output-1.png
- 11-run-output-2.png
- 12-rescan.png
- 13-reopen-in-container.png
- 14-select-devcontainer.png
- 15-remote-host-status-bar.png
- 16-run-python-file.png
- 17-run-client.png
- 18-check-result-img.png
- 19-vsc-rebuild-container.png
- 20-setup-docker.png
- 21-select-docker-compose-v2.png
- 22-module-status-running.png
- 22-setup-python-interpreter-docker-compose-client.png
- 23-modify-run-configureation.png
- 24-check-result-img-pycharm.png
- 25-run-client.png
- .gitattributes
- 0_streaming_model_detailed.png
- 0_streaming_model_mux_demux.png
- 10_adapters_ao_rtsp.png
- 10_adapters_dc_patterns.png
- 10_adapters_dr_fbsc.png
- 10_adapters_dr_fcsb.png
- 10_adapters_dr_sbfc.png
- 10_adapters_dr_scfb.png
- 10_adapters_edge_patterns.png
- 10_adapters_normal_pairs.png
- 10_adapters_ps_fbsc.png
- 10_adapters_ps_fcsb.png
- 10_adapters_ps_sbfc.png
- 10_adapters_ps_scfb.png
- 1_pipeline_diagram.jpg
- 24_metadata.png
- 24_metadata_workflow.png
- 29_pipeline.png
- 3_building_hybrid_pipelines_conditional.png
- 3_building_hybrid_pipelines_unconditional.png
- 55_ref.jpeg
- 55_res.jpeg
- custom.js
- class.rst
- class_basic_members.rst
- function.rst
- module_class.rst
- module_function.rst
- 404.html.tpl
- index.html.tpl
- layout.html
- robots.txt.tpl
- versions.html.tpl
- versions.js.tpl
- 0_batching.rst
- 0_dead_stream_eviction.rst
- 0_extra_image.rst
- 0_pipeline_benchmarking.rst
- 0_pipeline_stream_limit.rst
- 10_client_sdk.rst
- 11_memory_representation_function.rst
- 12_torch_hub.rst
- 13_auxiliary_video_streams.rst
- 14_jetson_dla.rst
- 15_embedded_kvs.rst
- 15_managed_pipeline_shutdown.rst
- 16_pipeline_watchdog.rst
- 17_restreaming.rst
- 18_stream_routing.rst
- 19_message_buffering.rst
- 1_custom_tracking.rst
- 20_metadata_merging.rst
- 2_element_group.rst
- 3_custom_roi.rst
- 3_frame_filtering.rst
- 3_hybrid_pipelines.rst
- 3_pipeline_idle_monitor.rst
- 3_skipping_frames.rst
- 4_etcd.rst
- 6_chaining.rst
- 8_ext_systems.rst
- 9_dev_server.rst
- 9_input_json_metadata.rst
- 9_open_telemetry.rst
- 9_prometheus_metrics.rst
- 0_configure_prod_env.rst
- 1_configure_dev_env.rst
- 1_pycharm.rst
- 1_vscode.rst
- 2_module_devguide.rst
- 3_samples.rst
- 1_pycharm_update_docker.rst
- 1_vscode_update_docker.rst
- dataclasses_note.rst
- 1_intro.rst
- 2_running.rst
- 3_hardware_compatibility.rst
- 0_rtsp_cam_compatibility.rst
- 1_python_multithreading.rst
- index.rst
- client.rst
- converter.rst
- frame_filter.rst
- index.rst
- input_preproc.rst
- libs.rst
- meta.rst
- model_config.rst
- module_config.rst
- param_storage.rst
- pyfunc.rst
- remote_file.rst
- selector.rst
- utils.rst
- 00_streaming_model.rst
- 10_adapters.rst
- 12_metadata.rst
- 12_module_definition.rst
- 12_pipeline.rst
- 12_var_interpolation.rst
- 12_video_processing.rst
- 25_top_level_roi.rst
- 26_nvinfer.rst
- 27_working_with_models.rst
- 30_dm.rst
- 40_cm.rst
- 43_am.rst
- 53_complexm.rst
- 54_additional_nvinfer_parameters.rst
- 55_preprocessing.rst
- 60_nv_trackers.rst
- 70_python.rst
- 75_working_with_metadata.rst
- 80_map.rst
- 80_opencv_cuda.rst
- 90_draw_func.rst
- 0_configure_doc_env.rst
- conf.py
- gh_script.py
- index.rst
- make.bat
- Makefile
- performance.md
- README.md
- requirements.txt
- webp.md
- frame_tag_filter.py
- frame_tag_filter_common.py
- frame_tag_funnel.py
- logger.py
- pyfunc_common.py
- pyfunc_plugin.py
- pygroup_plugin.py
- savant_rs_add_frames.py
- savant_rs_video_decode_bin.py
- savant_rs_video_demux.py
- savant_rs_video_demux_common.py
- sync_io_wrapper_bin.py
- zeromq_properties.py
- zeromq_source_bin.py
- zeromq_src.py
- gstsavantbatchmeta.h
- gstsavantframemeta.h
- nvdssavantframemeta.h
- savantnvprobes.h
- savantrsprobes.h
- gstsavantbatchmeta.cpp
- gstsavantframemeta.cpp
- nvdssavantframemeta.cpp
- savantnvprobes.cpp
- savantrsprobes.cpp
- CMakeLists.txt
- __init__.py
- pygstsavantframemeta.cpp
- CMakeLists.txt
- pyproject.toml
- requirements.txt
- setup.py
- nvbufsurface_generator.h
- nvbufsurface_generator.cpp
- CMakeLists.txt
- __init__.py
- pygstsavantframemeta.cpp
- CMakeLists.txt
- pyproject.toml
- requirements.txt
- setup.py
- savant.hpp
- savant.cpp
- CMakeLists.txt
- __init__.py
- client_callback_provider.h
- consts.h
- frame_buffer.cpp
- frame_buffer.h
- kvs_wrapper.cpp
- kvs_wrapper.h
- logger.h
- producer_state.h
- pykvssink.cpp
- stream_callback_provider.cpp
- stream_callback_provider.h
- video_frame.h
- CMakeLists.txt
- requirements.txt
- setup.py
- b_rbbox_meta.h
- nms.h
- nvsurfaceptr.h
- preprocessing.h
- pydocumentation.h
- pysavantboost.h
- b_rbbox_meta.cpp
- nms.cpp
- nvsurfaceptr.cpp
- preprocessing.cpp
- pysavantboost.cpp
- __init__.py
- custom_preprocessing.py
- rotatebbox.cpp
- rotatebbox.h
- cuda_utils.h
- cudaCrop.cu
- cudaCrop.h
- helpers.h
- nms_iou.cu
- nms_iou.h
- utils.h
- dsrbbox_meta.cpp
- dsrbbox_meta.h
- image.cpp
- image.h
- nvsurfaceptr.cpp
- nvsurfaceptr.h
- preprocessing.cpp
- preprocessing.h
- user_meta_type.h
- CMakeLists.txt
- nvdsparserapid.cpp
- nvdsparserapid.h
- types.h
- CMakeLists.txt
- pyproject.toml
- README.md
- requirements.txt
- setup.py
- .placeholder
- README.md
- base.txt
- dev.txt
- extra.txt
- age-gender-recognition-loop-400.webp
- age-gender-recognition-loop.webp
- age_gender_converter.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlay.py
- README.md
- run_perf.sh
- smoothed_counter.py
- smoothing.py
- animegan-loop-400.webp
- animegan-loop.webp
- .env
- animegan_converter.py
- docker-compose.x86.yml
- frame_replacer.py
- module.yml
- README.md
- run.sh
- area-object-counting-loop-400.webp
- area-object-counting-loop.webp
- area_config.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- object_counting.py
- overlay.py
- README.md
- smpte100_1024x1024.jpeg
- smpte100_1280x720.jpeg
- smpte100_1280x900.jpeg
- smpte100_1576x720.jpeg
- smpte100_1920x1080.jpeg
- smpte100_2160x720.jpeg
- smpte100_2560x720.jpeg
- smpte100_3840x1080.jpeg
- smpte100_3840x2160.jpeg
- smpte100_640x360.jpeg
- config_tracker_NvDCF_perf.yml
- config_tracker_NvSORT.yml
- run_perf_helper.sh
- demo.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- multiple_resolutions.py
- README.md
- Dockerfile.l4t
- Dockerfile.x86
- .env
- docker-compose.l4t.yml
- docker-compose.x86.yml
- draw_func.yml
- module.yml
- mongo_meta_exporter.py
- mongo_meta_importer.py
- README.md
- requirements.txt
- buffer_metrics.json
- dashboards.yml
- prometheus.yml
- demo.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- lag_generator.py
- prometheus.yml
- README.md
- result.jpg
- demo.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- example.py
- export.py
- README.md
- conditional-video-processing.webp
- conditional-video-processing_400.webp
- conditional_video_processing.py
- demo.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- source-switch.sh
- dwayne_johnson_01.jpeg
- dwayne_johnson_02.jpeg
- dwayne_johnson_03.jpeg
- jack_black_01.jpeg
- jack_black_02.jpeg
- jack_black_03.jpeg
- kevin_hart_01.jpeg
- kevin_hart_02.jpeg
- kevin_hart_03.jpeg
- nick_jonas_01.jpeg
- nick_jonas_02.jpeg
- nick_jonas_03.jpeg
- face-reid-loop-400.webp
- face-reid-loop.webp
- Dockerfile.l4t
- Dockerfile.x86
- config_tracker_NvDCF_perf.yml
- index_builder.yml
- index_builder_client.py
- module.yml
- overlay.py
- recognition.py
- utils.py
- .gitignore
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- run_perf.sh
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- README.md
- fisheye-line-crossing-loop-400.webp
- fisheye-line-crossing-loop.webp
- Dockerfile.l4t
- Dockerfile.x86
- crossings_counts.json
- dashboards.yml
- graphite.yml
- build_engines.sh
- converter.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- line_crossing.py
- module.yml
- overlay.py
- polygon_config.yml
- README.md
- run_perf.sh
- similari_tracker.py
- utils.py
- intersection-traffic-meter-loop-400.webp
- intersection-traffic-meter-loop.webp
- Dockerfile
- crossings_counts.json
- dashboards.yml
- graphite.yml
- build_engines.sh
- docker-compose.l4t.yml
- docker-compose.x86.yml
- line_crossing.py
- module.yml
- nvdsinfer_model_builder.patch
- overlay.py
- polygon_config.yml
- README.md
- run_perf.sh
- utils.py
- kafka-redis-adapter-demo.png
- demo.yml
- docker-compose-no-keydb.l4t.yml
- docker-compose-no-keydb.x86.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- get_frame_counter.py
- docker-compose.x86.yml
- functions.py
- module.yml
- README.md
- shuffle_dance-400.webp
- shuffle_dance.webp
- converter.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlay.py
- README.md
- run_perf.sh
- license-plate-recognition-400.webp
- license-plate-recognition.webp
- dict_us.txt
- docker-compose.l4t.yml
- docker-compose.x86.yml
- lprnet_converter.py
- module.yml
- ocrnet_converter.py
- overlay.py
- README.md
- run_perf.sh
- meta-merge-400.webp
- meta-merge.webp
- __init__.py
- module.yml
- roi_ingress_filter.py
- roi_resolver.py
- __init__.py
- config.json
- module.py
- roi_constants.py
- __init__.py
- config.json
- handler.py
- __init__.py
- module.yml
- __init__.py
- create_test_image.py
- Dockerfile
- sink.py
- source.py
- test_image.jpeg
- docker-compose.l4t.yml
- docker-compose.x86-test.yml
- docker-compose.x86.yml
- README.md
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- README.md
- sam.webp
- sam_4_masks.webp
- demo.yml
- predictor.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- module.yml
- docker-compose.l4t.yml
- README.md
- opencv_cuda_bg_remover_mog2-800.webp
- opencv_cuda_bg_remover_mog2.webp
- bgremover.py
- demo.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- run_perf.sh
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- README.md
- converter.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- README.md
- set-config.sh
- panoptic_driving_perception.webp
- panoptic_driving_perception_400.webp
- Dockerfile.l4t
- Dockerfile.x86
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- pytorch_infer.py
- README.md
- run_perf.sh
- pass-through-demo.png
- dashboards.yml
- performance_metrics.json
- prometheus.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- prometheus.yml
- py_func_metrics_example.py
- README.md
- 2_001.png
- 2_002.png
- 2_003.png
- 2_004.png
- 2_005.png
- 2_006.png
- 2_007.png
- 2_008.png
- 2_009.png
- 2_010.png
- 1_001.png
- 1_002.png
- 1_003.png
- 1_004.png
- 1_005.png
- 1_006.png
- 1_007.png
- 1_008.png
- 1_009.png
- 1_010.png
- logo_insight.png
- peoplenet-blur-demo-loop-400.webp
- peoplenet-blur-demo-loop.webp
- analytics.py
- animation.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlay.py
- person_face_matching.py
- README.md
- run_perf.sh
- smoothed_counter.py
- utils.py
- client.py
- config.yml
- docker-compose.x86.yml
- provider_config.json
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlays.py
- README.md
- cloud-sync-400.webp
- cloud-sync.webp
- Dockerfile.mediamtx
- mediamtx.yml
- mediamtx_re.yml
- module.yml
- rtsp_configuration.json
- stitching.py
- docker-compose.yml
- README.md
- analytics.py
- router.py
- router_config.json
- screenshot_maker.py
- screenshot_maker.yml
- docker-compose.yml
- README.md
- Dockerfile.l4t
- Dockerfile.x86
- build_engines.sh
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- nvdsinfer_model_builder.patch
- README.md
- run_perf.sh
- retina_rtsp_configuration.json
- .env
- docker-compose-ffmpeg.yml
- docker-compose-retina.yml
- README.md
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlay.py
- README.md
- roi_injector.py
- scene_change.py
- set-roi.sh
- convert_coco_to_savant.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- metric.py
- module.yml
- README.md
- requirements.txt
- custom_source_shaper.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- overlay.py
- README.md
- shuffle_dance_360p_1080p.webp
- shuffle_dance_360p_1080p_small.webp
- docker-compose.x86.yml
- module.yml
- overlay.py
- README.md
- 00-main.png
- 01-trace.png
- 02-process-frame.png
- 03-blur-filter.png
- 04-error-code.png
- provider_config.json
- x509_provider_config.json
- blur.py
- docker-compose-with-tls.l4t.yml
- docker-compose-with-tls.x86.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- module.yml
- README.md
- devcontainer.json
- devcontainer.json
- smpte100_1280x720.jpeg
- test_img.jpeg
- test_img.json
- Dockerfile.l4t
- Dockerfile.x86
- README.md
- README.md
- run.py
- custom_pyfunc.py
- module.yml
- overlay_custom.py
- overlay_draw_spec.py
- run.py
- README.md
- .dockerignore
- .gitignore
- docker-compose.l4t.yml
- docker-compose.x86.yml
- Makefile
- README.md
- requirements.txt
- road-traffic-loop.webp
- traffic-meter-loop-400.webp
- traffic-meter-loop.webp
- Dockerfile.l4t
- Dockerfile.x86
- dashboards.yml
- entries_exits_sum.json
- graphite.yml
- .env
- build_engines.sh
- docker-compose-no-adapters.l4t.yml
- docker-compose-no-adapters.x86.yml
- docker-compose.l4t.yml
- docker-compose.x86.yml
- line_config.yml
- line_crossing.py
- module.yml
- overlay.py
- README.md
- run_perf.sh
- utils.py
- module.yml
- .env
- docker-compose.yml
- README.md
- shuffle_dance-400.webp
- shuffle_dance.webp
- converter.py
- converter_opt.py
- gpu_converter.py
- module.yml
- overlay.py
- sampler.py
- docker-compose.l4t.yml
- docker-compose.x86.yml
- README.md
- run_perf.sh
- README.md
- __init__.py
- builder.py
- parser.py
- __init__.py
- converter.py
- frame_filter.py
- input_preproc.py
- model.py
- pyfunc.py
- selector.py
- source_shaper.py
- __init__.py
- __init__.py
- calc_resolver.py
- default.yml
- json_resolver.py
- module_config.py
- python_resolver.py
- schema.py
- __init__.py
- classifier.py
- rapid.py
- raw_output.py
- vector_attribute.py
- yolo.py
- yolo_v8face.py
- yolo_x.py
- __init__.py
- constants.py
- frame.py
- object.py
- __init__.py
- build_engine.py
- element_config.py
- file_config.py
- model.py
- processor.py
- __init__.py
- attribute.py
- event.py
- iterator.py
- meta_types.py
- object.py
- pipeline.py
- surface.py
- telemetry.py
- tensor.py
- __init__.py
- auxiliary_stream.py
- base_drawfunc.py
- buffer_processor.py
- decoding.py
- drawfunc.py
- element_factory.py
- encoding.py
- errors.py
- metadata.py
- opencv_utils.py
- pipeline.py
- pyfunc.py
- pygroup.py
- runner.py
- source_output.py
- __init__.py
- __main__.py
- main.py
- __init__.py
- element.py
- queue.py
- __init__.py
- buffer_processor.py
- codecs.py
- element_factory.py
- event.py
- ffi.py
- pipeline.py
- runner.py
- utils.py
- __init__.py
- status.py
- __init__.py
- align_face.py
- crop.py
- __init__.py
- attribute.py
- constants.py
- errors.py
- object.py
- type.py
- __init__.py
- __init__.py
- __init__.py
- base.py
- gcs.py
- http.py
- s3.py
- schema.py
- utils.py
- __init__.py
- detector.py
- __init__.py
- artist_gpumat.py
- position.py
- __init__.py
- check_display.py
- config.py
- draw_spec.py
- file_types.py
- fps_meter.py
- image.py
- log.py
- memory_repr.py
- memory_repr_pytorch.py
- modules_cache.py
- nms.py
- platform.py
- registry.py
- singleton.py
- sink_factories.py
- source_info.py
- stat_logger.py
- version.py
- welcome.py
- __init__.py
- VERSION
- common.py
- run_bridge.py
- run_module.py
- run_perf.py
- run_sink.py
- run_source.py
- uri-input.py
- common.txt
- dev.txt
- __init__.py
- test_parser.py
- test_pyfunc_parser.py
- test_validator.py
- __init__.py
- test_buffer_metrics.py
- test_config.yml
- test_discrepancy.py
- test_docker_client.py
- test_pyfunc.py
- test_pyfunc_config.yml
- test_run.py
- __init__.py
- conftest.py
- __init__.py
- parser.py
- schema.py
- validator.py
- __init__.py
- discrepancy.py
- __init__.py
- __main__.py
- buffer_metrics.py
- main.py
- Dockerfile
- README.md
- test_extra.py
- test_memory_repr.py
- test_onnxruntime.py
- test_torch2trt.py
- build_extra_packages.sh
- build_pycuda.sh
- build_torch2trt.sh
- check-environment-compatible
- copy_code.sh
- install_savant_rs.py
- prepare_release.sh
- update_local_images.sh
- .dockerignore
- .gitattributes
- .gitignore
- CODE_OF_CONDUCT.md
- healthcheck.sh
- LICENSE
- Makefile
- PREPARE_RELEASE.md
- pyproject.toml
- README.md
# Installation Guide
git clone https://github.com/insight-platform/Savant
Downloads the entire project code from GitHub to your computer.
cd Savant
Moves into the project folder you just downloaded.
2. Docker
Easy Recommended- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
../../utils/check-environment-compatible && docker compose -f docker-compose.x86.yml up
Runs the command against the services defined in the compose file.
../../utils/check-environment-compatible && docker compose -f docker-compose.l4t.yml up
Runs the command against the services defined in the compose file.
Pulled directly from this repo's README.
3. CMake
Mediumcd libs/gstsavantframemeta
This project's files live in a subfolder, so move into it first.
mkdir build && cd build
Creates a folder to hold the build output and moves into it.
cmake ..
Analyzes the source code and generates build configuration files (must be run inside the build folder).
make
Compiles the code based on the generated build configuration to produce an executable.
4. Python
Easypip install -r adapters/requirements.txt
Installs the Python libraries listed in requirements.txt (or similar).
python <μ€νν νμΌλͺ
>.py # READMEμμ μ νν μ€ν νμΌλͺ
μ νμΈνμΈμ
Runs the Python script (or module).
5. Make
Medium- Git Needed to download the project code from GitHub.
- Make Usually pre-installed on Linux/macOS. On Windows, install separately (e.g. via MSYS2 or WSL).
make
Compiles the code based on the generated build configuration to produce an executable.
