Die am ,,Institut für Mikroelektronik`` entwickelten Halbleitertechnologie- und Halbleiterbauelementsimulatoren wurden 1992 zu dem Programmsystem VISTA (Viennese Integrated System for Technology CAD Applications) zusammengefaßt. Dieses Projekt beinhaltet auch die Kopplung der Simulatoren mit einer gemeinsamen Datenbasis und eine graphische Benutzeroberfläche. Es entstand ein Software-System mit einer sehr großen Anzahl von Quelltextdateien und Abhängigkeiten zwischen diesen. Es wurde sehr bald klar, daß das Standardprogramm make zur Kontrolle dieser nicht die nötige Funktionalität besitzt, um ein so großes Softwareprojekt effizient zu verwalten. Ein Versuch mit einem Preprozessor ähnlich imake war nicht erfolgreich. Aus diesem Grund wurde ein eigenes Projekt namens VMake (Vienna Make Utility), das zur Verwaltung von Software mit ihren Abhängigkeiten dient, begonnen. Als Implementationssprache wurde LISP gewählt, da sich diese Sprache für schnelles Prototyping eignet. Die Implementierung verwendete Listen zur Definition der Abhängigkeiten zwischen verschiedenen Dateien. Eine wichtige Neuerung war, daß symbolische Namen eingeführt wurden, welche die Nachteile der Verzeichnis-orientierten Definitionen verhinderten. Alle Definitionen wurden lokal in den Beschreibungsdateien gemacht und waren innerhalb VMake dann global verfügbar. Die gesamte Softwareentwicklung wurde als ein Projekt verwaltet. Das hatte den Nachteil, daß jeder Entwickler den gesamten Quelltext benötigte.
Die Schwächen der ersten Implementierung von VMake wurden bei der aktuellen zweiten behoben. Diese ist nicht mehr Listen-orientiert, sondern baut auf LISP-Objekten auf, die eine dateityp-spezifische Behandlung erlauben. Weiters wurden Projektabhängigkeiten eingeführt, welche es erlauben, große Software-Systeme nun in eine Vielzahl kleiner und leichter überschaubarer Projekte zu zerteilen. Diese können effizienter behandelt werden, da jeder Entwickler sich nun auf seine eigenen Entwicklungen konzentrieren kann und andere benötigte Projekte (über Projektabhängigkeiten definiert) einfach von der installierten Version verwenden kann. Dadurch wird auch der pro Benutzer benötigte Plattenspeicherbedarf auf einen Bruchteil verringert.
Ein weiterer Vorteil von VMake liegt in der automatischen Quelltexterzeugung. Das Anbinden von Funktionen und Konstanten zwischen verschiedenen Programmiersprachen ist automatisch durch TAC (Tool Abstraction Concept) gelöst. Weiters wurde auch ein Funktionsgenerator UNFUG (UNiversal FUnction Generator) entwickelt, der einen template/tuple-Entwurf von Quelltext erlaubt. Eine Vielzahl von Problemen kann dadurch einfach gelöst werden.