{"id":19820252,"url":"https://github.com/spryfox/toolrelauncher","last_synced_at":"2026-05-12T08:31:22.426Z","repository":{"id":48526210,"uuid":"459299559","full_name":"SpryFox/ToolRelauncher","owner":"SpryFox","description":"A simple tool to pick the most recent build configuration of another tool to launch ","archived":false,"fork":false,"pushed_at":"2022-07-23T00:58:40.000Z","size":21,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-01-11T08:29:59.773Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SpryFox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-14T19:34:50.000Z","updated_at":"2022-02-15T10:08:44.000Z","dependencies_parsed_at":"2022-09-01T12:22:03.985Z","dependency_job_id":null,"html_url":"https://github.com/SpryFox/ToolRelauncher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpryFox%2FToolRelauncher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpryFox%2FToolRelauncher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpryFox%2FToolRelauncher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpryFox%2FToolRelauncher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpryFox","download_url":"https://codeload.github.com/SpryFox/ToolRelauncher/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241176617,"owners_count":19922732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T10:22:22.903Z","updated_at":"2026-05-12T08:31:22.381Z","avatar_url":"https://github.com/SpryFox.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ToolRelauncher\nA simple command line tool that can be used as a wrapper for your other tools to\nlaunch the most recent built configuration of your tool. (How many times do you\nneed to say the word \"tool\" before it loses all meaning?)\n\nE.g. you might have a config validator that you launch from VSCode and from your\nserver, and you want most people to run the optimized build configuration called\n\"Development\", but still allow programmers to easily run the \"Debug\" build when\nthey want to. Instead of teaching both VSCode and your server how to pick the\ncorrect build configuration (e.g. via a config or looking which was most\nrecently built), you can just build Relauncher and name it `ConfigValidator.exe`,\nand have both VSCode and the server run `ConfigValidator.exe`. Relauncher will then\nlook for `ConfigValidatorDebug.exe`, `ConfigValidatorDevelopment.exe`, and\n`ConfigValidatorShipping.exe`, and pick the most recently modified version of these\noptions -- forwarding all the arguments.\n\nThe goal of ToolRelauncher is to be simple and small, so as to add as little overhead\nas possible (both in build times and launch times).\n\n## Setup\n\n1. Build `RelauncherMain.cpp`\n2. Name it after the tool you want it to relaunch (either by having the compiler\n   output that name, or by copying `Relauncher.exe` to the appropriate name)\n3. Point your scripts \u0026 tools at the base tool name without a build configuration\n\n### Windows\n\nHere's a stripped down command line to build ToolRelauncher on Windows with a\nstatic CRT:\n\n```bat\n\"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\Llvm\\x64\\bin\\clang++.exe\" RelauncherMain.cpp -g -Wall -Wextra -Werror -O2 -DNDEBUG -DUNICODE -D_UNICODE -o Relauncher.exe\n```\n\nYou can add `-D_MT -D_DLL \"-Wl,/nodefaultlib:libcmt\" -lmsvcrt -lvcruntime -lucrt`\nto the command line to link against a dynamic CRT.\n\nIt should also build with `cl.exe` without any specific options needed.\n\n### Linux\n\nHere's a stripped down command line to build ToolRelauncher on Linux:\n\n```sh\nclang++-12 RelauncherMain.cpp -g -Wall -Wextra -Werror -o Relauncher\n```\n\n## Assumptions\n\nRelauncher assumes your tools are named after the build configuration, rather than\nput in a different folder based on it. It also assumes Unreal-esque build\nconfigurations of `Debug`, `Development`, and `Shipping` (because that's what we use).\n\nPull requests that extend ToolRelauncher to support other setups are welcome.\n\n## Compatibility\n\nToolRelauncher has only been tested with clang 12 on Windows (from Visual Studio's package)\nand Linux, and with both unicode and non-unicode Windows build options.\n\n## Command line arguments\n\nRelauncher supports two command line arguments, which must be the first argument(s):\n\n - `--debug-relauncher`: Print some debug output to help understand what Relauncher\n   considered when making its decision\n - `--which-relauncher`: Print the name of the executable that would be launched to\n   stdout and then exit, and do not launch the target exe","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspryfox%2Ftoolrelauncher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspryfox%2Ftoolrelauncher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspryfox%2Ftoolrelauncher/lists"}