Clutch is a "cl.exe snapshotter" which creates Microsoft Visual Studio compiler/linker distributions that are suitable for source control check-in. It was designed to collect the absolute minimum set of dependencies required to build your program at a given moment in time. It is able to know this by running your build script and observing all file I/O.
Clutch will copy cl.exe and link.exe and any other files accessed (for reading) into a target directory. The default target is a subdirectory of the current directory, named cl. Within the target directory, all .h and .lib files are copied into include and lib subdirectories respectively. All other files will be merged into the root directory.
For example:
clutch build.bat portable_clThe above invocation assumes that you are located in your project's root directory, that build.bat is your build script which is also located in the root directory, and that portable_cl is the name of the desired target subdirectory within that root. It will create the following structure:
portable_cl\
cl.exe
link.exe
...
include\
...
lib\
...
One example of using this generated portable distribution without modifying your environment would be to change your build.bat like so:
- Use
portable_cl\clinstead ofcl. - Add
/Iportable_cl\includeto your compiler options. - Add
/libpath:portable_cl\libto your linker options.
For more details, run clutch without any arguments.
clutchcurrently assumes 64-bit.- Due to the minimalistic nature of taking a snapshot of dependencies at a given moment in time, adding new
.hor.libfiles which did not exist in your project at the time of the snapshot will of course change the set of files depended upon, sometimes drastically. As an example, changing whether you depend upon the CRT or not. If you are not currently exercising resources which you expect you may eventually require, referencing them in your project at the time of the snapshot may save you from needing to take additional snapshots. clutchdeletes all the files and directories inside the target directory prior to each run.