wavec CLI संदर्भ
यह दस्तावेज़ वर्तमान वेव कंपाइलर (wavec) कार्यान्वयन मानक के CLI क्रियाविन्यास को स्पष्टता से समझाता है।
मुख्य सिद्धांत:
wavecएक कंपाइलर है।- पैकेज स्थापना/संकल्प (लॉकफाईल, रजिस्ट्री, डाउनलोड)
wavecकी जिम्मेदारी नहीं है। - बाहरी निर्भरताएँ
wavecका निष्पादन करते समय स्पष्ट CLI तर्क के रूप में पास की जाती हैं।
1. मूल प्रारूप
wavec [global-options] <command> [command-options]
उदाहरण:
wavec -O2 run main.wave
wavec build app.wave --link ssl -L ./native/lib
wavec run app.wave --dep-root .vex/dep
2. आदेश पार्सिंग नियम (महत्वपूर्ण)
wavec पहले सभी аргументов में से ग्लोबल विकल्प को स्कैन करता है, फिर बचे हुए аргументов को <command> के रूप में पार्स करता है।
अर्थात, ग्लोबल विकल्प का स्थान लचीला होता है।
wavec -O3 run main.wave
wavec run main.wave -O3
wavec run -O3 main.wave
उपरोक्त तीनों मान्य हैं।
-- का उपयोग करने पर, उसके बाद ग्लोबल विकल्प स्कैनिंग रुक जाती है और कमांड क्षेत्र में चली जाती है।
wavec -- run main.wave
3. आदेश
3.1 run <file>
वेव फ़ाइल को संकलित और चलाया जाता है।
wavec run hello.wave
क्रिया:
- स्रोत पार्सिंग + इम्पो र्ट विस्तार
- LLVM IR निर्माण
- नेटिव बाइनरी लिंक (
target/<file_stem>) के साथ - निष्पादन
विशेषताएँ:
- निष्पादित प्रोग्राम के समापन कोड को
wavecस्थानांतरित करता है।
3.2 build <file>
एक्जीक्यूटेबल फ़ाइल (exe) बनाई जाती है।
wavec build app.wave
आउटपुट बाइनरी:
target/<file_stem>
3.3 build विकल्प (-o, -c)
build कमांड से आउटपुट फ़ाइल नाम और आउटपुट प्रारूप को विकल्प द्वारा नियंत्रित किया जा सकता है।
wavec build app.wave -o ./bin/app
wavec build app.wave -c
wavec build app.wave -c -o ./build/app.o
-o <file>: आ उटपुट फ़ाइल नाम निर्दिष्ट करता है।- डिफ़ॉल्ट (
-cनहीं): एक्जीक्यूटेबल फ़ाइल आउटपुट मार्ग निर्दिष्ट करता है। -cके साथ: ऑब्जेक्ट फ़ाइल आउटपुट पथ निर्दिष्ट करता है।
- डिफ़ॉल्ट (
-c: लिंक को छोड़ता है और केवल ऑब्जेक्ट फ़ाइल बनाता है।-cका उपयोग करते समय, ऑब्जेक्ट पथ को stdout में आउटपुट करता है।
डिफ़ॉल्ट क्रिया:
wavec build app.wave->target/appwavec build app.wave -c->target/app.o(पथ का आउटपुट)
फ्रीस्टैंडिंग कर्नेल ऑब्जेक्ट उदाहरण:
wavec --llvm \
--target=x86_64-unknown-none-elf \
build kernel.wave --emit=obj --freestanding -o kernel.o
aarch64-unknown-none-elf, riscv64-unknown-none-elf को भी उसी तरह से उपयोग किया जा सकता है।
3.4 install std, update std
स्टैंडर्ड लाइब्रेरी इंस्टॉल/अपडेट कमांड है।
wavec install std
wavec update std
3.5 --help, --version
wavec --help
wavec --version
