- Windows native development, Visual Studio installation dependency की वजह से जटिल और गैर-प्रभावी हो जाता है
- दर्जनों GB install size, अपारदर्शी component management, और version mismatch problems जैसी चीज़ें developer productivity को कम करती हैं
- इसे हल करने के लिए हल्का CLI tool
msvcup बनाया गया, जो MSVC toolchain और Windows SDK को version-wise, isolated form में अपने-आप install कर सकता है
msvcup JSON manifest parsing, automatic environment setup (autoenv), और lock file support के ज़रिए reproducible build environment देता है
- यह approach Visual Studio Installer पर निर्भर हुए बिना script-based पूरी तरह automated build system को संभव बनाती है
Windows native development की समस्याएँ
- Visual Studio install करने वाला मौजूदा तरीका जटिल installation process और अस्थिर dependency management की वजह से developers पर बोझ डालता है
- “Desktop development with C++” workload, खास SDK version जैसी बारीक selections करनी पड़ती हैं, और गलत चयन होने पर build fail हो सकता है
- install size 50GB तक पहुँच जाती है, और uninstall के बाद भी registry leftovers और background services बचे रहते हैं
- Linux में package manager की एक command से toolchain install की जा सकती है, लेकिन Windows में हज़ारों components को manually चुनना पड़ता है
- Visual Studio एक single structure है जिसमें editor, compiler, और SDK आपस में उलझे होते हैं, इसलिए version management और environment reproduction मुश्किल हो जाता है
- नतीजतन “मेरे PC पर तो चलता है” जैसी असंगतियाँ अक्सर होती हैं, और यह native development में entry barrier बन जाती है
msvcup: एक नया approach
- msvcup एक open source CLI tool है, जो Visual Studio install किए बिना MSVC toolchain और Windows SDK को सीधे download और install करता है
- हर version
C:\msvcup\ के नीचे isolated directories में install होता है, इसलिए versions के बीच टकराव के बिना उन्हें साथ-साथ इस्तेमाल किया जा सकता है
- installation कुछ ही मिनटों में पूरी हो जाती है, और ARM cross-compilation tools भी अपने-आप शामिल हो जाते हैं
msvcup install command ज़रूरी packages install करती है, और autoenv command automatic environment directory बनाती है
- इस directory में environment variables अपने-आप सेट करने वाले wrapper executables और
toolchain.cmake file शामिल होती है, इसलिए CMake projects भी अलग configuration के बिना build हो सकते हैं
build.bat script example में msvcup के ज़रिए “Hello, World” प्रोग्राम को Visual Studio के बिना build किया जा सकता है
- यह Windows 10 या उससे ऊपर के environment में सिर्फ
curl और tar के साथ काम करता है
अंदरूनी काम करने का तरीका
- Microsoft द्वारा वितरित Visual Studio component JSON manifests को parse करके सिर्फ ज़रूरी packages की पहचान की जाती है
- compiler, linker, headers, libraries जैसे core elements को सीधे Microsoft CDN से download किया जाता है
- install किए गए components को lock file से manage किया जाता है, ताकि पूरी team एक ही version के packages share कर सके
install और autoenv commands idempotent हैं, इसलिए अगर चीज़ें पहले से install हों तो ये कुछ milliseconds में पूरी हो जाती हैं
वास्तविक उपयोग के उदाहरण
- Tuple (pair programming app) ने
msvcup को अपने CI build system में integrate करके Visual Studio pre-installation requirement हटा दी
- WebRTC सहित सैकड़ों C/C++ projects को एक ही toolchain/SDK के साथ build किया जा सकता है
- x86_64 और ARM builds दोनों supported हैं
- फायदे
- version-wise directory installation से parallel version management और आसान reinstallation संभव
- cross-compilation का automatic support, अलग configuration की ज़रूरत नहीं
- lock file आधारित reproducibility की गारंटी, और Microsoft की तरफ बदलाव होने पर तुरंत पता चल सकता है
- तेज़ execution speed, बेकार की reinstallation नहीं
सीमाएँ और विस्तार
msvcup compiler toolchain-centric तरीके से डिज़ाइन किया गया है, इसलिए अगर Visual Studio IDE खुद चाहिए हो, तो official installation अब भी ज़रूरी है
- लेकिन ज़्यादातर native development workflows में यह IDE के बिना भी पूरा build environment देता है
- उदाहरण के तौर पर दिया गया raylib build script Visual Studio के बिना भी SDK और toolchain को अपने-आप install करके project build करता है
- GUI के बिना सिर्फ command line से पूरी तरह automated build process चलती है
निष्कर्ष
msvcup Visual Studio Installer की जटिलता हटाकर version-manageable, lightweight native build environment देता है
- यह तरीका Windows native development को reproducible और automated form में बदल देता है, और developers को IDE dependency से बाहर निकलने में मदद करता है
- Repo : https://github.com/marler8997/msvcup
अभी कोई टिप्पणी नहीं है.