เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

Ad


OnWorks favicon

cons - เบญเบญเบ™เป„เบฅเบ™เปŒเบขเบนเปˆเปƒเบ™ Cloud

เปเบฅเปˆเบ™เบ‚เปเป‰เป€เบชเบเปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


Cons - เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบญเบšเปเบง

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”


เบ„เบนเปˆเบกเบทเปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบš 2.2.0

เบฅเบดเบ‚เบฐเบชเบดเบ” (c) 1996-2000 Free Software Foundation, Inc.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบŠเบญเบšโ€‹เปเบงโ€‹เบŸเบฃเบตโ€‹; เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปเบˆเบโ€‹เบขเบฒเบโ€‹เบกเบฑเบ™โ€‹เปเบฅเบฐ / เบซเบผเบทโ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบกเบฑเบ™โ€‹เบžเบฒเบโ€‹เปƒเบ•เป‰โ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เบ‚เบญเบ‡โ€‹
เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ GNU เบ—เบตเปˆเบˆเบฑเบ”เบžเบดเบกเป‚เบ”เบ Free Software Foundation; เบšเปเปˆเบงเปˆเบฒเบˆเบฐ
เบชเบฐเบšเบฑเบš 2 เบ‚เบญเบ‡เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”, เบซเบผเบท (เบ•เบฒเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™) เบชเบฐเบšเบฑเบšเบ•เปเปˆเบกเบฒ.

เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเป‚เบ”เบเบซเบงเบฑเบ‡เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เปƒเบ”เป†;
เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบเบฒเบ™เบ„เป‰เบฒ เบซเบผเบทเบ„เบงเบฒเบกเบชเบญเบ”เบ„เปˆเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเบฐเป€เบžเบฒเบฐ.
เป€เบšเบดเปˆเบ‡เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ GNU เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

เบ—เปˆเบฒเบ™เบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเปเบฒเป€เบ™เบปเบฒเบ‚เบญเบ‡เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ—เบปเปˆเบงเป„เบ› GNU เบžเป‰เบญเบกเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰;
เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒ COPYING. เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบ‚เบฝเบ™เบซเบฒ Free Software Foundation, Inc., 59 Temple
เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ - Suite 330, Boston, MA 02111-1307, USA.

เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต


cons เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เบ•เบปเป‰เบ™เบ•เป, เบŠเบญเบšเปเบง, เปเบ•เปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ
เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. Cons เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบญเบญเบโ€‹เปเบšเบšโ€‹เบˆเบฒเบโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เป€เบ–เบดเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹
เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเปเบœเปˆเบ‚เบฐเบซเบเบฒเบเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡. เบ‚เปเป‰เป€เบชเบ
เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เป€เบ‚เบปเป‰เบฒเปƒเบˆเปเบฅเบฐเบฎเบฑเบเบชเบฒเป„เบ”เป‰.
Cons เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบŠเบญเบŸเปเบงเบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ–เบทเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบœเปˆเบžเบฑเบ™.

Cons เปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰. script เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆ
Perl scripts, เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ—เบฑเบ‡เบชเบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‡เปˆเบฒเบเปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบ. เบ‚เบญเบšเป€เบ‚เบ”เบ—เบปเปˆเบงเป‚เบฅเบเบ‚เบญเบ‡
เบ•เบปเบงเปเบ›เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบเบปเบ™เป„เบเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ / เบชเบปเปˆเบ‡เบญเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡
scripts, เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบฎเบฑเบเบชเบฒเป„เบงเป‰เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐ script.
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต: เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธ Perl เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒ
เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡. เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบซเบผเบฒเบเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰
เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ semantics เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡. เบ‚เปเป‰เป€เบชเบ
เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบญเบฑเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ—เบปเปˆเบงเป‚เบฅเบ
เบชเป‰เบฒเบ‡. เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบœเบฐเบฅเบดเบ”เป„เบ”เป‰เบ‡เปˆเบฒเบเบˆเบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เปเบซเบผเปˆเบ‡เบ”เบฝเบง. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเปˆเบญเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. Overrides เบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เป‰
เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡เบชเบฐเบ„เบดเบšเปƒเบ”เป†. MD5 เบฅเบฐเบซเบฑเบ”เบฅเบฑเบš
เบฅเบฒเบเป€เบŠเบฑเบ™ เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ, เปเบฅเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบงเปˆเบฒ
เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เปƒเบซเบกเปˆโ€‹.

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เปเบฅเบฐเบซเบผเบฒเบ, Cons เบเบฑเบ‡เบ„เบปเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰. เบ™เบตเป‰โ€‹เบˆเบฐโ€‹,
เบซเบงเบฑเบ‡เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบเบดเปˆเบ‡, เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเปเบˆเป‰เบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ เบ‚เปเป‰เป€เบชเบ? เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ เบšเปเปˆ เป€เบฎเบฑเบ”เปƒเบซเป‰?


เบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™ เบ เป€เบฎเบฑเบ”เปƒเบซเป‰ เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™. เปƒเบ™เบงเบฑเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบชเบญเบ‡เบชเบฒเบกเบ‚เปเป‰
เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ” - เปเบฅเบฐโ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เป‚เบ”เบโ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบเบฒเบ™ make--เบ—เบตเปˆโ€‹
เบเบฐเบ•เบธเป‰เบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡ Cons.

เบชเป‰เบฒเบ‡ เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™

เบฅเบฐเบšเบปเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ”เบเปเปˆเบ•เบฒเบกเบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™. เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบฎเบฑเบ”
เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เปเบฅเบฐเบญเบฐเบ™เบธเบžเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เบเบฑเบšเปเบ™เบงเป‚เบ™เป‰เบกเบ™เบตเป‰เปƒเบ™เบซเบผเบฒเบเบงเบดเบ—เบต. เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบฑเบ™
เบšเปเปˆเบ”เบตเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเปเบœเปˆเบ‚เบฐเบซเบเบฒเบเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ•เปˆเบฒเบ‡เป† -
เบญเป‰เบญเบกเบฎเบญเบšเป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบŠเบฐเบ™เบฐเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบ™เบตเป‰; เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡
เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡ recursively เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ sub-directory เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบชเบฑเบšเบชเบปเบ™, in
เป€เบŠเบดเปˆเบ‡เบกเบฑเบ™เบกเบฑเบเบˆเบฐเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบ•เบปเบงเปเบ›เบ–เบทเบเบ•เบฑเป‰เบ‡เปเบ™เบงเปƒเบ”, เบซเบผเบทเบกเบตเบœเบปเบ™เปเบ™เบงเปƒเบ”เบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›
เบˆเบฐเบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบฃเบดเบšเป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบง
เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฒเบ, เปเบ•เปˆเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเปˆเบงเบ™เปƒเบซเบเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเป€เบžเบทเปˆเบญ clutter เปเบฅเป‰เบง
เบžเบฒโ€‹เบชเบฒ overextendedโ€‹. เป€เบฅเบทเป‰เบญเบเป†, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡
เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบฅเบฒเบเบŠเบทเปˆเบญเบทเปˆเบ™. เบ™เบตเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ•เบทเปˆเบกเบญเบตเบ
เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบชเบฑเบšโ€‹เบชเบปเบ™โ€‹.

เบชเป‰เบฒเบ‡ เบเบฒเบ™เบชเบทเบšเบžเบฑเบ™

เบ‚เปเป‰เบซเป‰เบฒเบกเบ‚เบญเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบ”เป‰เบชเบฐเป€เบซเบกเบตเป€เบ›เบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบชเปˆเบงเบ™เบซเบผเบฒเบเบกเบฑเบ, เบ
เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเปเบกเปˆเบ™เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบžเบฒเบเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบง, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™
เบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช
เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹, เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบญเบตเบ‡โ€‹เปƒเบชเปˆโ€‹เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹เบชเบฐโ€‹เปเบ•เบกโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เป€เบžเบทเปˆเบญโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบงเปˆเบฒโ€‹
เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเบเปˆเบฝเบงเบเบฑเบšเบœเบนเป‰เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบš
เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเป„เบŸเบฅเปŒเบ„เบงเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ redered. เบ–เป‰เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบžเบฒเบเบ™เบญเบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบกเปˆเบ™
เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเปเปˆเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ '`snapped' เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบšเปˆเบญเบ™, เบเบฒเบ™เบชเบฐเปเบ•เบกเป€เบงเบฅเบฒเปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐ
เบ”เบตเบเปˆเบงเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™.

variant เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™

Make เบชเบฐเบซเบ™เบญเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเบดเปˆเบ‡เบญเปเบฒเบ™เบงเบเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบ—เบตเปˆเบˆเปเบฒเบเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ variant. เบเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบง
เบ‚เบญเบ‡เป€เบงเบ—เบตเบฎเบฒเบ”เปเบงเปเบฅเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debuggable เบ—เบฝเบšเบเบฑเบšเบฅเบฐเบซเบฑเบ” optimized, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”
เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ›เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™. เบชเบดเปˆเบ‡เบ—เบตเปˆ เบชเบณ เบ„เบฑเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™, เบกเบฑเบ™
เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡ เบชเบณ เบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เปเบเบเบ•เบปเบงเปเบ›เบซเบผเบทเบชเบฒเบกเบฒเบ”เปเบœเปˆเบžเบฑเบ™เป„เบ”เป‰
เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบซเบผเบท variant เบขเบนเปˆเปƒเบ™เปƒเบˆ. เบ”เป‰เบงเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเปเบเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบญเบญเบเป€เบ›เบฑเบ™
เบซเบผเบฒเบ build directory, เปเบเบเบญเบญเบเบˆเบฒเบเปเบซเบผเปˆเบ‡. เปเบฅเบฐเบ–เป‰เบฒเป€เบ•เบฑเบเบ™เบดเบเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰,
เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบ•เบปเบงเปเบ›เบกเบตเบขเบนเปˆ
เป€เบ›เบฑเบ™เป„เบกเป‰เบขเบทเบ™เบ•เบปเป‰เบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ resorting เบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™.

เบšเบฑเบ™เบ”เบฒเบซเปเบ›เบฐเบŠเบธเบก

Make เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบญเบšเปเบงเบˆเบฒเบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ a
เป‚เบ„เบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบเบฒเบ™ repository เบชเบนเบ™โ€‹เบเบฒเบ‡โ€‹. เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” VPATH เบ‚เบญเบ‡ GNU เป€เบฎเบฑเบ” (เปเบฅเบฐเบšเบฒเบ‡เบญเบฑเบ™เบญเบทเปˆเบ™เป†
เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”) เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบ•เบฒเบกเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰: เบกเบฑเบ™
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป„เบ›เบซเบฒเบŠเบทเปˆ VPATH เป„เบงเป€เบเบตเบ™เป„เบ›เปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบ„เบปเป‰เบ™เบซเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต VPATH. เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡
builds, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเป‰เบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐเบกเบต
เป„เบŸเบฅเปŒเปƒเบ”เป†เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบฅเบฐเบซเบฑเบ” (เบšเบฑเบ™เบŠเบต VPATH, เปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”) เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™
เป„เบŸเบฅเปŒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบเบฑเบš VPATH, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบซเบผเบฒเบ
เบ„เบงเบฒเบกเบฎเบนเป‰ repository เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ makefiles.

เบเบฒเบ™เบฎเบฑเบเบชเบฒ it เบ‡เปˆเบฒเบเบ”เบฒเบ


เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบ”เป‰เบ–เบทเบเบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡. เปƒเบ™เบ™เบตเป‰เปเบฅเบฐเบ•เปเปˆเบกเบฒ
เบžเบฒเบเบชเปˆเบงเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบ™เบฐเบ™เปเบฒ Cons เปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปเบ™เบงเปƒเบ”.

Perl scripts

เบ‚เปเป‰เป€เบชเบเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆ Perl. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, Cons scripts--เบ—เบฐเบšเบฝเบ™ เปเบฅเบฐ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ, เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ
to makefile or makefile-- เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Perl. เบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบฑเบ™เบ—เบต: เป„เบ”เป‰
เบžเบฒเบชเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เบชเบฐเบ„เบดเบšเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เป€เบ›เบฑเบ™ Perl
เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก, เบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบฎเบนเป‰เบงเปˆเบฒ Perl เปเบกเปˆเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ,
เบ”เป‰เบงเบเบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ”เบต, เปเบฅเบฐเบ„เบงเบฒเบกเบซเบกเบฒเบเบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบ. เบกเบฑเบ™เบกเบตเบ•เบปเบงเปเบ›เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบง
เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ„เบฒเบ”เบซเบงเบฑเบ‡เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒ, subroutines, เบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™
เบšเปเปˆเบกเบต syntax เบžเบดเป€เบชเบ”เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบชเปเบฒเบฅเบฑเบš Cons. เบเบฒเบ™เปƒเบŠเป‰ Perl เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ‚เบฝเบ™
simplifies เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เป€เบฅเบทเป‰เบญเบเป†
เบ„เบงเบฒเบกโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹.

เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!

เป€เบžเบทเปˆเบญเบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! C
เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบตเปˆโ€‹เบกเบต Consโ€‹:

$env = new cons();
เป‚เบ„เบ‡เบเบฒเบ™ $env 'hello', 'hello.c';

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฐเบ„เบดเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบ•เบฑเป‰เบ‡เบŠเบทเปˆเบชเบฐเบ„เบดเบš เบเปเปˆเบชเป‰เบฒเบ‡, เปเบฅเบฐเบชเป‰เบฒเบ‡
เบชเบฐเบšเบฒเบเบ”เบต.c เปเบซเบผเปˆเบ‡เป„เบŸเบฅเปŒเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบดเบก 'cons hello' เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡
เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ:

% cons เบชเบฐเบšเบฒเบเบ”เบต
cc -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o

เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก

A เบ„เบงเบฒเบกเบ‡เปˆเบฒเบเบ‚เบญเบ‡ cons เปเบกเปˆเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ a เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบ›เบฑเบ™ เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡ เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเป€เบ›เบฑเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบ„เบนเปˆเบ„เบต/เบกเบนเบ™เบ„เปˆเบฒ เปเบฅเบฐเบŠเบธเบ”เบ‚เบญเบ‡ เบงเบดเบ—เบตเบเบฒเบ™.
เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบšเบญเบ Cons เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเป‚เบ”เบเบœเปˆเบฒเบ™ an
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$env = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ(
CC => 'gcc',
LIBS => 'libworld.a'
);

เป‚เบ„เบ‡เบเบฒเบ™ $env 'hello', 'hello.c';

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™, เบ„เบทเบเบฑเบšเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต
overridden เบ„เปˆเบฒเบ‚เบญเบ‡ 'CC' เป€เบžเบทเปˆเบญเปƒเบซเป‰ GNU C Compiler เบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบ–เบทเบเปƒเบŠเป‰เปเบ—เบ™. เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ™เบตเป‰โ€‹เบ‚เบญเบ‡โ€‹ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹, libworld.a, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฅเบฐเบšเบธเบงเปˆเบฒเปƒเบ”เป†
เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ™เบฑเป‰เบ™. เบ–เป‰เบฒเบซเปเบชเบฐเบซเบกเบธเบ”
เบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบ”เบตเปเบฅเบฐเบ”เบต, เปเบ•เปˆเบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฐเบเบญเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ:

เบซเปเบชเบฐเปเบธเบ” $env 'libworld', 'world.c';

เบ”เบฝเบงเบ™เบตเป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบดเบก 'cons hello', เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบˆเบฐเบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เปเบฅเบฐ,
เปเบ™เปˆเบ™เบญเบ™, 'gcc' เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบ—เบฑเบ‡เบชเบญเบ‡เป‚เบกเบ”เบนเบ™:

% cons เบชเบฐเบšเบฒเบเบ”เบต
gcc -c hello.c -o hello.o
gcc -c world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เปเบฅเบฐ เบชเบปเบกเบšเบนเบ™ เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ

เบ”เป‰เบงเบ Cons, เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบชเบทเบšเบ•เปเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบซเบกเบฒเบเป€เบซเบ”
เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ›เบฑเบšเบ›เบธเบ‡เปเบเป‰เป„เบ‚ world.c, world.o เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™, libworld.a recreated, เปเบฅเบฐ เบชเบฐเบšเบฒเบเบ”เบต
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ„เบทเบ™เปƒเปเปˆ:

% vi world.c
[เปเบเป‰เป„เบ‚]
% cons เบชเบฐเบšเบฒเบเบ”เบต
gcc -c world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ: Cons ``เบฎเบนเป‰ยด world.o เบ‚เบทเป‰เบ™เบเบฑเบš world.c, เป€เบžเบฒเบฐเบงเปˆเบฒ
เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™ 'เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”'. เบกเบฑเบ™เบเบฑเบ‡เบฎเบนเป‰เบงเปˆเบฒ libworld.a
เบ‚เบทเป‰เบ™เบเบฑเบš world.o เปเบฅเบฐโ€‹เบ™เบฑเป‰เบ™ เบชเบฐเบšเบฒเบเบ”เบต เบ‚เบทเป‰เบ™เบเบฑเบš libworld.a, เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™ turns เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒ เบชเบฐเบšเบฒเบเบ”เบต.c เบเบฑเบ‡เบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒเบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš, world.h:

% emacs world.h
[เปเบเป‰เป„เบ‚]
% cons เบชเบฐเบšเบฒเบเบ”เบต
gcc -c hello.c -o hello.o
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

Cons เบฎเบนเป‰เป„เบ”เป‰เปเบ™เบงเปƒเบ” เบชเบฐเบšเบฒเบเบ”เบต.c เบ›เบฐเบเบญเบšเบกเบต world.h, เปเบฅเบฐโ€‹เบ™เบฑเป‰เบ™ เบชเบฐเบšเบฒเบเบ”เบต เบชเบฐเบ™เบฑเป‰เบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เปƒเบซเบกเปˆ? เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™เบซเบผเบทเบšเปเปˆ เบชเบฐเบšเบฒเบเบ”เบต เปเบกเปˆเบ™โ€‹เบ‚เบถเป‰เบ™-
เบกเบฒเบฎเบญเบ”เบ›เบฐเบˆเบธ, Cons เบฎเบฝเบเบฎเป‰เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบกเบฑเบ™, เบชเบฐเบšเบฒเบเบ”เบต.c. scanner เบ™เบตเป‰ enumerates เป„เบ”เป‰
เป„เบŸเบฅเปŒเบฅเบงเบกเป‚เบ”เบ เบชเบฐเบšเบฒเบเบ”เบต.c เป€เบžเบทเปˆเบญเบกเบฒเป€เบ–เบดเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบ™เบฑเป‰เบ™
เป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เป‚เบ”เบ Cons script. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™ recursive: เป„เบŸเบฅเปŒเปƒเบ”เป†เบฅเบงเบกเป‚เบ”เบ
เป„เบŸเบฅเปŒเบฅเบงเบกเบˆเบฐเบ–เบทเบเบชเบฐเปเบเบ™เป€เบŠเบฑเปˆเบ™เบเบฑเบ™.

เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเปเบžเบ‡เบšเป? เบ„เปเบฒเบ•เบญเบšเปเบกเปˆเบ™ - เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเปƒเบซเบเปˆเป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบš
เป€เบงเบฅเบฒเบชเบฐเปเบเบ™เปเบกเปˆเบ™เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบŸเบทเป‰เบ™โ€‹เบŸเบนโ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบเปˆโ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™ Cons เบˆเบฐโ€‹
เปƒเบŠเป‰ เป€เบง เบฅเบฒ เป€เบ›เบฑเบ™ เบˆเปเบฒ เบ™เบงเบ™ เป€เบ‡เบดเบ™ เบ—เบตเปˆ เป€เบซเบกเบฒเบฐ เบชเบปเบก เบ‚เบญเบ‡ เบเบฒเบ™ เบ„เบดเบ” เบเปˆเบฝเบง เบเบฑเบš เบกเบฑเบ™ เบเปˆเบญเบ™ เบ—เบตเปˆ เบกเบฑเบ™ เบˆเบฐ เบ•เบฑเบ” เบชเบดเบ™ เปƒเบˆ เบงเปˆเบฒ เบšเปเปˆ เบกเบต เบซเบเบฑเบ‡ เบˆเบฐ เป€เบ›เบฑเบ™
เป€เบฎเบฑเบ”เปเบฅเป‰เบง (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเปˆเบงเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰!). เบ‚เปˆเบฒเบงเบ”เบตเปเบกเปˆเบ™เบงเปˆเบฒ Cons เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™
เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบผเบฒเบ”เบเปˆเบญเบเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เบ—เบปเปˆเบงเป‚เบฅเบ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบฅเปเบฒเบ”เบฑเบš

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ Cons เป€เบฎเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเปเบฅเบฐเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เบ—เบปเปˆเบงเป‚เบฅเบ, เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”, Cons เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡ เบฅเปเบฒเบ”เบฑเบš
เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡. เบเบฒเบ™เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เปเบฅเบฐเบ—เบฝเบšเป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ
เบ—เปˆเบฒเบ™เบˆเบฐเบ„เบฒเบ”เบซเบงเบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบŠเบธเบ”เป€เบ•เบฑเบกเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš. เบกเบต Cons, เบ™เบตเป‰เบ‚เบฐเบซเบเบฒเบ
เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบ–เบดเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡
เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡ - เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบš multi-pass hierarchical
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ - เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบ•เบทเปˆเบกเบญเบตเบเปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›.

เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ เบ•เบปเป‰เบ™เป„เบกเป‰ - เบเบฑเบ‡ เบžเบฝเบ‡เปเบ•เปˆ as เบ‡เปˆเบฒเบเบ”เบฒเบ


A เบฅเบณ เบ”เบฑเบšเบŠเบฑเป‰เบ™ of เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ scripts

เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เปƒเบ™ Cons, เบ–เบทเบเบˆเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ scripts. เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”
เบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เปเบกเปˆเบ™ script เป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบเปเปˆเบชเป‰เบฒเบ‡. เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบชเบฐเบ„เบดเบš, เป‚เบ”เบเบชเบปเบ™เบ—เบดเบชเบฑเบ™เบเบฒ, เปเบกเปˆเบ™เปเบ•เปˆเบฅเบฐเบ„เบปเบ™
เป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบ—เบฐเบšเบฝเบ™. เบชเบฐเบ„เบฃเบดเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบ™, เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เป‚เบ”เบ 'เบชเป‰เบฒเบ‡',
เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ' เปเบฅเบฐ 'เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ'.

เป„เบ”เป‰ เบชเป‰เบฒเบ‡ เบ„เปเบฒเบชเบฑเปˆเบ‡

เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเป‰เบฒเบ‡' เป€เบญเบปเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ เบ—เบฐเบšเบฝเบ™ เบŠเบทเปˆเป„เบŸเบฅเปŒ, เปเบฅเบฐเบˆเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™
เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เบชเป‰เบฒเบ‡ qw(
เป„เบ”เป€เบงเบต / เบˆเปเบชเบฐเปเบ”เบ‡เบœเบปเบ™ / Conscript
เบ„เบปเบ™เบ‚เบฑเบš/เป€เบกเบปเบฒเบชเปŒ/Conscript
parser/Conscript
utilities/Conscript
);

เบ™เบตเป‰เปเบกเปˆเบ™เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบชเบญเบ‡เบŠเบฑเป‰เบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡เบชเบฐเบ„เบดเบšเบเปเปˆเบชเป‰เบฒเบ‡: เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ” เบ—เบฐเบšเบฝเบ™ เป„เบŸ
เป„เบ”เป‰เบ–เบทเบเบเปˆเบฒเบงเป€เบ–เบดเบ‡เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ. เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบšเปเปˆเปเบกเปˆเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰
เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบต build script เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเบงเบเบกเบฑเบ™.

เบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เป€เบ›เบฑเบ™ script เบซเบผเบฒเบเบฅเบฐเบ”เบฑเบš. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบ”เป‰ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบญเบฒเบ”เบˆเบฐ
เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰:

เบชเป‰เบฒเบ‡ qw(
parser/Conscript
เบ„เบปเบ™เบ‚เบฑเบš/Conscript
utilities/Conscript
);

เปเบฅเบฐ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเปƒเบ™ เบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ” เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบญเบฒเบ”เบกเบตเบญเบฑเบ™เบ™เบตเป‰:

เบชเป‰เบฒเบ‡ qw(
เบชเบฐเปเบ”เบ‡/Conscript
เบซเบ™เบน / Conscript
);

เบ›เบฐเบชเบปเบšเบเบฒเบ™เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบ•เบปเบงเปเบšเบšเปƒเบ™เบญเบฐเบ”เบตเบ”เปเบกเปˆเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ
เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เบขเบนเปˆเบ•เปเปˆเปœเป‰เบฒเป€เบˆเบปเป‰เบฒ, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹เปเบกเปˆเบ™โ€‹
เบเบฑเบ‡เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบฎเบฑเบเบชเบฒเป„เบงเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ a
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบญเบฒเบ”เบˆเบฐเบ•เบดเบ”เบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡
เบฅเบณเบ”เบฑเบšเบŠเบฑเป‰เบ™เบเปเปˆเบชเป‰เบฒเบ‡.

เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, Cons เบšเปเปˆเบ›เปˆเบฝเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบกเบฑเบ™เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบต a
เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบกเบฑเบ™เปเบกเปˆเบ™เบฅเบงเบกเบ—เบฑเบ‡. เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบ
เบเบฒเบ™เบฅเบฐเบšเบธ, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ file:

Conscript_chdir 1;

เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰, Cons เบˆเบฐเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต
เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบญเปˆเบฒเบ™โ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ™เบฑเป‰เบ™โ€‹, เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เบ„เบฑเป‰เบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹
เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡.

เบ„เบฒเบ”เบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบšเบฒเบ‡เบฅเบธเป‰เบ™ Cons เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.
เป€เบžเบทเปˆเบญเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบ™เบตเป‰, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒ Cons เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เบญเปˆเบฒเบ™เบขเบนเปˆเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ„เบงเบ™เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡
เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

Conscript_chdir 0;

เบžเบตเปˆเบ™เป‰เบญเบ‡, เบเบฒเบ”เบ•เบดเบžเบตเปˆเบ™เป‰เบญเบ‡เบชเบนเบ‡เบชเบธเบ”, เปเบฅเบฐ เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ เป€เบญเบเบฐเบชเบฒเบ™ เบŠเบทเปˆ

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ Build เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš
เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡ script เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบˆเบฒเบโ€‹. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบชเปเบฒเบฅเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเบญเบทเปˆเบ™
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบเปˆเบฒเบงเป€เบ–เบดเบ‡เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบŠเบทเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบซเบกเบฒเบ hashโ€‹, `` # ''โ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ–เบทเบโ€‹เบ•เบตโ€‹เบฅเบฒโ€‹เบ„เบฒโ€‹เบชเบปเบกโ€‹เบ—เบฝเบšโ€‹เบเบฑเบšโ€‹เบ—เบฒเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹.
เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เบ”เบฑเบš (เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบขเบนเปˆ). เปเบฅเบฐ, เบšเปเปˆเปเบ›เบเปƒเบˆ, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™
เบ”เป‰เบงเบ ``/'', เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเป€เบ›เบฑเบ™เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš
เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เบชเบฐเป„เบฅเป‰เบ”เป‰เบฒเบ™เบซเบผเบฑเบ‡เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเปœเป‰เบฒเป€เบžเบทเปˆเบญเบ•เบฑเป‰เบ‡เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เป‚เบกเบ”เบนเบ™ in เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ scripts

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ”เบถเบ‡เป‚เบกเบ”เบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบ•เปˆเบฅเบฐ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเป‚เบ”เบเปƒเบŠเป‰ Perl เบ›เบปเบเบเบฐเบ•เบด 'เปƒเบŠเป‰' เบซเบผเบท 'เบ•เป‰เบญเบ‡เบเบฒเบ™'
เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™:

เปƒเบŠเป‰เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”;
เบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ::เป‚เบกเบ”เบนเบ™;

เปเบ•เปˆเบฅเบฐ 'เปƒเบŠเป‰' เบซเบผเบท 'เบ•เป‰เบญเบ‡เบเบฒเบ™' เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฑเบ™เบ›เบฒเบเบปเบ”. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ a
เป‚เบกเบ”เบนเบ™เปƒเบ™เบซเบผเบฒเบ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เปƒเบชเปˆเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ 'เปƒเบŠเป‰' เบซเบผเบท 'เบ•เป‰เบญเบ‡เบเบฒเบ™' เปƒเบ™เปเบ•เปˆเบฅเบฐ
เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบกเบ”เบนเบ™.

เบ‚เบญเบšเป€เบ‚เบ” of เบ•เบปเบงเปเบ›

เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ เปเบฅเบฐเบ—เบฑเบ‡เปเบปเบ” เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบŠเบตเบงเบดเบ”เปƒเบ™ Perl เบ—เบปเปˆเบงเป„เบ›, เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
package cons เบ„เบงเบšเบ„เบธเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบเบชเปเบฒเบฅเบฑเบšเบŠเบธเบ”เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบเบชเปเบฒเบฅเบฑเบš
เปเบ•เปˆเบฅเบฐเบชเบฐเบ„เบฃเบดเบšเปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบเบปเบเป€เบงเบฑเป‰เบ™ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบฎเบฑเบšเบšเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡. เบ—เบธเบเป†เบ•เบปเบงเปเบ›เบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบซเบผเบทเปƒเบŠเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ script
เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡ - เบšเปเปˆเปเบกเปˆเบ™เป‚เบ”เบเบชเบฐเบ„เบดเบšเบžเบฒเบเบ™เบญเบเบšเบฒเบ‡เบญเบฑเบ™.

เบ•เบปเบงเปเบ›เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™ เบ™เบณ เป€เบ‚เบปเป‰เบฒ เป‚เบ”เบเบชเบฐเบ„เบฃเบดเบšเบˆเบฒเบเบชเบฐเบ„เบฃเบดเบšเบซเบผเบฑเบเบ‚เบญเบ‡เบกเบฑเบ™. เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เป€เบ‚เบปเป‰เบฒ a
เบ•เบปเบงเปเบ›, เบกเบฑเบ™เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™ เบชเบปเปˆเบ‡เบญเบญเบ เป‚เบ”เบเบžเปเปˆเปเบกเปˆเปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”
เบˆเบฐโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™).

เป„เบ”เป‰ เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ เบ„เปเบฒเบชเบฑเปˆเบ‡

เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ' เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$env = new cons();
$INCLUDE = "#export/include";
$LIB = "#export/lib";
เบชเบปเปˆเบ‡เบญเบญเบ q( env เบฅเบงเบก LIB );
เบชเป‰เบฒเบ‡ qw(util/Conscript );

เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ‡เปˆเบฒเบเป†เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป„เบงเป‰เปƒเบ™เบฅเบฒเบเบเบฒเบ™ 'เบชเบปเปˆเบ‡เบญเบญเบ' เบˆเบฐเบ–เบทเบเบเบฐเบฎเบญเบเบญเบญเบเป„เบ›
เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเป‰เบฒเบ‡' เบ•เปเปˆเบกเบฒ. เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ' เบˆเบฐเบชเบปเปˆเบ‡เบญเบญเบเบžเบฝเบ‡เปเบ•เปˆ Perl เบœเบดเบง เปœเบฑเบ‡
เบ•เบปเบงเปเบ›, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ•เบปเบงเปเบ›เบ—เบตเปˆเบŠเบทเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ `$'. เบ•เบปเบงเปเบ›เบญเบทเปˆเบ™เป†, เบงเบฑเบ”เบ–เบธ, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป‚เบ”เบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ - เปเบ•เปˆเบชเบฐเบ„เบดเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบงเบฑเบ”เบ–เบธเบ”เบฝเบงเบเบฑเบ™, เปเบฅเบฐเบ™เบตเป‰
เบงเบฑเบ”เบ–เบธเบ„เบงเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบซเป‰เบญเปˆเบฒเบ™เบขเปˆเบฒเบ‡เบ”เบฝเบงเป‚เบ”เบเบชเบฐเบ„เบฃเบดเบšเบเปˆเบญเบ เปเบฅเบฐเป‚เบ”เบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš
script เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เบญเบญเบโ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบญเบกเบฎเบฑเบšเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเปƒเบซเบกเปˆเปƒเบซเป‰เบเบฑเบš scalar เบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบ
เบ•เบปเบงเปเบ›--เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡. เบฅเปเบฒเบ”เบฑเบšเบ™เบตเป‰, เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบกเปˆเบ™ OK:

$env = new cons();
เบชเบปเปˆเบ‡เบญเบญเบ q( env เบฅเบงเบก LIB );
เบชเป‰เบฒเบ‡ qw(util/Conscript );
$env = new cons(CFLAGS => '-O');
เบชเป‰เบฒเบ‡ qw(เบญเบทเปˆเบ™เป†/Conscript );

เบกเบฑเบ™เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™เบงเปˆเบฒเบ•เบปเบงเปเบ›เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบเปˆเบญเบ™เบซเบผเบทเบซเบผเบฑเบ‡เบˆเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ'. เป„เบ”เป‰
เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡ 'Build' เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.
เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฐเบฎเบญเบเบญเบญเบเป„เบ›. เบ—เบธเบเป†เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ' เบ•เปเปˆเบกเบฒ, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™,
invalidate เบ—เปเบฒเบญเบดเบ”: เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ•เบปเบงเปเบ›เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบญเบญเบเปƒเบ™เปเบ•เปˆเบฅเบฐ
เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ'.

เป„เบ”เป‰ เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ เบ„เปเบฒเบชเบฑเปˆเบ‡

เบ•เบปเบงเปเบ›เบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบเป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเบปเปˆเบ‡เบญเบญเบ' เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ„เบดเบšเบเปˆเบญเบเป‚เบ”เบ
เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ'. script เบเปˆเบญเบเบชเบฐเป€เบซเบกเบตเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบ•เบปเบงเปเบ›เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ
script เบ”เบตเบเบงเปˆเบฒ. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰:

เบ™เบณเป€เบ‚เบปเป‰เบฒ q(env INCLUDE );

เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เบ•เบฒเบกเบเบปเบ”เปเบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบซเบฒเบเบชเบฐเบ„เบฃเบดเบšเบซเบผเบฑเบเบชเบปเปˆเบ‡เบญเบญเบเบ—เบฑเบ‡ `$env' เปเบฅเบฐ `$INCLUDE'. เบกเบฑเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡
เป„เบ”เป‰เปƒเบซเป‰เปเบ•เปˆเบฅเบฐเบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบกเบฑเบ™เป€เปเบฒเบฐเบชเบปเบกเบชเบณเบฅเบฑเบšเบชเบฐเบ„เบฃเบดเบšเบเปˆเบญเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบŠเบธเบ”เบเปˆเบญเบเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบ (เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, `$LIB', เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเป‚เบ”เบ
เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบšเปเปˆเป„เบ”เป‰เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ).

เบ—เบธเบเบ•เบปเบงเปเบ›เบ—เบตเปˆเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบญเบญเบเบ„เบทเบ™เปƒเบซเบกเปˆเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเปเบฒเบ”เบฑเบš:

เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ qw ( env เบฅเบงเบก );
เบชเป‰เบฒเบ‡ qw (เบขเบนเปˆเบฅเบธเปˆเบก-เบ‚เป‰เบญเบ/Conscript);

เบˆเบฐเบชเบฐเปœเบญเบ‡เบ—เบฑเบ‡ `$env' เปเบฅเบฐ `$INCLUDE' เปƒเบซเป‰เบเบฑเบšเป„เบŸเบฅเปŒเบเปˆเบญเบ. เบ–เป‰เบฒเบžเบฝเบ‡เปเบ•เปˆ '$env' เบˆเบฐเป€เบ›เบฑเบ™
เบชเบปเปˆเบ‡เบญเบญเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบžเบฝเบ‡เบžเป:

เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ qw ( env เบฅเบงเบก );
เบชเบปเปˆเบ‡เบญเบญเบ q ( env );
เบชเป‰เบฒเบ‡ qw (เบขเบนเปˆเบฅเบธเปˆเบก-เบ‚เป‰เบญเบ/Conscript);

เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบงเบปเป‰เบฒ, เบ•เบปเบงเปเบ›เบญเบฒเบ”เบˆเบฐเบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบตเป‰เบ™ 'เบชเป‰เบฒเบ‡' เปƒเบ™
script เบเปˆเบญเบ.

เบชเป‰เบฒเบ‡ script เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™ เบ„เปเบฒเบชเบฑเปˆเบ‡

เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡ build scripts เปเบกเปˆเบ™เบงเปˆเบฒ scripts เบ”เบตเบเบงเปˆเบฒ
เบ›เบฐเป€เบกเบตเบ™เบเปˆเบญเบ™ script inferior เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบกเปˆเบ™
เบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เบเปˆเบญเบ™, เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบ•เปเปˆเบฒเบเบงเปˆเบฒเปƒเบ”เป†. เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เปเบ—เป‰เป†
เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบœเบปเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบชเป‰เบฒเบ‡':

เบชเป‰เบฒเบ‡ qw(
เป„เบ”เป€เบงเบต / เบˆเปเบชเบฐเปเบ”เบ‡เบœเบปเบ™ / Conscript
เบ„เบปเบ™เบ‚เบฑเบš/เป€เบกเบปเบฒเบชเปŒ/Conscript
parser/Conscript
utilities/Conscript
);

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบทเบญเบเปƒเบชเปˆเบŠเบทเปˆเบชเบฐเบ„เบฃเบดเบšเบ•เบฒเบกเบฅเบณเบ”เบฑเบšเบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”
เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒ. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™
เบเปเปˆเบชเป‰เบฒเบ‡.

A เบฎเบนเบšเปเบšเบš เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™ เป„เบŸ


เบšเบฒเบ‡ เบ‡เปˆเบฒเบเบ”เบฒเบ เบญเบฐเบ™เบธเบชเบฑเบ™เบเบฒ

เปƒเบ™เบฅเบฐเบšเบปเบšเบŠเบญเบšเปเบงเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เปƒเบ”เป†, เบงเบดเบ—เบตเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เป‰เบญเบ‡เบกเบต
เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹เบšเบฑเบ™โ€‹เบ”เบฒโ€‹เบชเบปเบ™โ€‹เบ—เบดโ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฑเบšโ€‹
Cons, เปเบ•เปˆเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ.

เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบžเบทเป‰เบ™โ€‹เบ–เบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบœเปˆเบฒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบ”เบฑเบšเบเบฒเบ‡. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบญเบฑเบ™เบ™เบตเป‰
เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ, เปเบฅเบฐ, เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก C, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบเปˆเบญเบเปเบšเบšเบ—เปเบฒเบกเบฐเบ”เบฒเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰,
เป€เบŠเบฑเปˆเบ™โ€‹เบงเปˆเบฒ เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ, lib, เป€เบˆเบปเป‰เบฒ, เปเบฅเบฐเบญเบทเปˆเบ™เป†

เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ. เบ‡เปˆเบฒเบเบ”เบฒเบ เบเปเปˆเบชเป‰เบฒเบ‡ file for
a เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเป‚เบ”เบเปƒเบŠเป‰เบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

# เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!

# เบšเปˆเบญเบ™เปƒเบ”เบงเบฒเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.
$EXPORT = '#เบชเบปเปˆเบ‡เบญเบญเบ';

เบชเบปเปˆเบ‡เบญเบญเบ q(CONS เบฅเบงเบกเบกเบต LIB BIN );

# เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™.
$INCLUDE = "$EXPORT/เบฅเบงเบก";
$LIB = "$EXPORT/lib";
$BIN = "$EXPORT/bin";

# เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
$CONS = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ (
CPPPATH => $INCLUDE, # เบฅเบงเบกเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ C
LIBPATH => $LIB, # เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบชเบณเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
LIBS => '-lworld', # เบฅเบฒเบเบŠเบทเปˆเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
);

เบชเป‰เบฒเบ‡ qw(
เบชเบฐเบšเบฒเบเบ”เบต/Conscript
เป‚เบฅเบ/Conscript
);

เป„เบ”เป‰ เป‚เบฅเบ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

# เป„เบŸเบฅเปŒ Conscript เบชเปเบฒเบฅเบฑเบšเป‚เบฅเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต
เบ™เบณเป€เบ‚เบปเป‰เบฒ q(CONS INCLUDE LIB );

# เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ $CONS $LIB, 'libworld.a';
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ $CONS $INCLUDE, 'world.h';

#เบชเบดเบ™เบ„เป‰เบฒเบžเบฒเบเปƒเบ™
เบซเปเบชเบฐเปเบธเบ” $CONS 'libworld.a', 'world.c';

เปเบฅเบฐ เบชเบฐเบšเบฒเบเบ”เบต เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

# เป„เบŸเบฅเปŒ conscript เบชเปเบฒเบฅเบฑเบš directory เบชเบฐเบšเบฒเบเบ”เบต
เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ qw(CONS BIN );

#เบชเบดเบ™เบ„เป‰เบฒเบชเบปเปˆเบ‡เบญเบญเบ
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ $CONS $BIN, 'เบชเบฐเบšเบฒเบเบ”เบต';

#เบชเบดเบ™เบ„เป‰เบฒเบžเบฒเบเปƒเบ™
เป‚เบ„เบ‡เบเบฒเบ™ $CONS 'เบชเบฐเบšเบฒเบเบ”เบต', 'hello.c';

เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰, เป„เบ›เบซเบฒเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เปเบฅเบฐเป€เบญเบตเป‰เบ™ 'cons' เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ
เบšเบญเบ Cons เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, Cons recursively เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”
เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเบžเบฒเบเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบฑเป‰เบ™ (เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เปเบ™เปˆเบ™เบญเบ™). เบ–เป‰เบฒเบกเบต
เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบœเบฐโ€‹เบฅเบดเบ”โ€‹เบ•เบฐโ€‹เบžเบฑเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹เปƒเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹,
เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™.

% cons เบชเบปเปˆเบ‡เบญเบญเบ
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ world/world.h เป€เบ›เบฑเบ™ export/include/world.h
cc -Iexport/include -c hello/hello.c -o hello/hello.o
cc -Iexport/include -c world/world.c -o world/world.o
ar r world/libworld.a world/world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบฅเบ/libworld.a
ranlib world/libworld.a
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ world/libworld.a เป€เบ›เบฑเบ™ export/lib/libworld.a
cc -o hello/hello hello/hello.o -Lexport/lib -lworld
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ hello/hello เป€เบ›เบฑเบ™ export/bin/hello

เบชเบฐเบญเบฒเบ”, เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เป„เบ”เป‰โ€‹, เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบฅเบฒเบ”โ€‹ scripts

เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบชเบฐเบญเบฒเบ”เบซเบผเบฒเบเปเบฅเบฐเบเบปเบ‡เบเบฑเบšเบˆเบธเบ”. เบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆ
เบฅเบฐเบšเบธเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”: เบžเบงเบเป€เบ‚เบปเบฒเบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰, เบŠเบทเปˆเบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™,
เปเบฅเบฐเบŠเบทเปˆเบ‚เบญเบ‡เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเบฐเบ„เบดเบšเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ: เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒ
เบ›เบฒเบ”เบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบ•เบปเป‰เบ™เป„เบกเป‰เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เปˆเบฒเบ™เบกเบตเบญเบดเบ”เบชเบฐเบซเบผเบฐเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™: เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡
เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ (เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰), เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบซเบกเปˆเบ‚เบญเบ‡ เบ—เบฐเบšเบฝเบ™ เปเบŸเป‰เบก. เบ—
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบชเบปเปˆเบ‡เบญเบญเบเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ™เบตเป‰เบ‡เปˆเบฒเบ.

เบซเบกเบฒเบเป€เบซเบ”, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบงเบดเบ—เบตเบเบฒเบ™ Cons เบ”เบนเปเบฅเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เบ—เบฑเบ‡เปเบปเบ” เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบชเปเบฒเบฅเบฑเบš
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰เบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบเปเบ—เป‰เป†เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเบปเปˆเบ‡เบญเบญเบเบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบžเบทเป‰เบ™เบ—เบตเปˆเปเบฅเบฐเป€เบงเบฅเบฒ. เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ™เบตเป‰เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”
เบงเบฝเบเบ‡เบฒเบ™เบซเบผเบฒเบ, เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เบชเบฒเบกเบฒเบ”เบฎเบฑเบเบชเบฒเป„เบ”เป‰.

เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ เปเบซเบผเปˆเบ‡ เปเบฅเบฐ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบ•เบปเป‰เบ™เป„เบกเป‰


เบกเบฑเบ™เบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบˆเบฒเบ
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฒเบกเบžเบฝเบ‡เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐ
เบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ•เปเปˆเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ variant เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ variant builds
เบขเบนเปˆเบฎเปˆเบงเบกเบเบฑเบ™.

เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐ เปเบซเบผเปˆเบ‡ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เป„เบ”เป‰ เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ เบ„เปเบฒเบชเบฑเปˆเบ‡

Cons เบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”. เบฅเบดเป‰เบ‡เบ„เปŒ
เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™ invoked เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰:

เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ 'build' => 'src';

เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปเบกเปˆเบ™ ``เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ'' เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธ. เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ
เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เบฑเป‰เบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡, src, เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบ เป‚เบฅเบ เปเบฅเบฐ เบชเบฐเบšเบฒเบเบ”เบต เบ‚เป‰เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ™เบตเป‰โ€‹,
เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เบชเปเบฒเบฅเบฑเบšเบชเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰
เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบชเป‰เบฒเบ‡ qw(
build/world/Conscript
build/hello/Conscript
);

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบžเบฐเบเบฒเบ” เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ„เบทเบเบฑเบšเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเป‰เบฒเบ‡. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบ—เปˆเบฒเบ™เบžเบดเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเปˆเบญเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

% cons เบชเบปเปˆเบ‡เบญเบญเบ
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/world/world.h เป€เบ›เบฑเบ™ export/include/world.h
cc -Iexport/include -c build/hello/hello.c -o build/hello/hello.o
cc -Iexport/include -c build/world/world.c -o build/world/world.o
ar r build/world/libworld.a build/world/world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ build/world/libworld.a
ranlib build/world/libworld.a
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/world/libworld.a เป€เบ›เบฑเบ™ export/lib/libworld.a
cc -o build/hello/hello build/hello/hello.o -Lexport/lib -lworld
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/hello/hello เป€เบ›เบฑเบ™ export/bin/hello

เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, Cons เป„เบ”เป‰เบ”เบนเปเบฅเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปเบฅเบฐเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเป‰เบฒเบ‡. เบชเปเบฒเบฅเบฑเบš
เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, build/world/world.o เปเบกเปˆเบ™เบฅเบงเบšเบฅเบงเบกเบกเบฒเบˆเบฒเบ build/world/world.c, เปเบฅเบฐ
เบชเบปเปˆเบ‡เบญเบญเบ/include/world.h เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบˆเบฒเบ build/world/world.h. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เปƒเบ™โ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹
เบฅเบฐโ€‹เบšเบปเบšโ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบ—เบตเปˆโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ‚เบญเบ‡ ``เบเบฒเบโ€‹' เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบฒเบโ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เปเบซเบผเปˆเบ‡โ€‹
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบ Cons, เบšเปเปˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡.
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบกเบฒโ€‹, เบšเบฑเบ™โ€‹เบ™เบฒโ€‹เบ—เบดโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปเบ™เบงโ€‹เบ™เบตเป‰ ``โ€‹เปƒเบ™โ€‹เบชเบฐโ€‹เบ–เบฒเบ™โ€‹เบ—เบตเปˆโ€‹' เบซเบผเบทโ€‹เบกเบฑเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบ›เปˆเบฝเบ™โ€‹เบŠเบทเปˆโ€‹เบกเบฑเบ™โ€‹
เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปƒเบซเบกเปˆ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบชเบธเบ”เบ—เป‰เบฒเบ, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบเปƒเบ”เป†เบˆเบฐเบชเบนเบ™เป€เบชเบ. Cons เบˆเบฐ
เบเบงเบ”เบซเบฒเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ™เบตเป‰เปƒเบ™เบ„เบฑเป‰เบ‡เบ•เปเปˆเป„เบ›เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เปเบฅเบฐเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบกเบฑเบ™เบ„เบทเบ™เปƒเปเปˆ
เบขเปˆเบฒเบ‡ เป€เปเบฒเบฐ เบชเบปเบก.

เบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™, เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบงเปˆเบฒ no เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ•เบดเบ”โ€‹เบžเบฑเบ™โ€‹ เบ—เบฐเบšเบฝเบ™
เป„เบŸเบฅเปŒ. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป„เบ›เบ•เบทเปˆเบกเบญเบตเบ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›.

variant เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™


เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ เบเป‰เบงเบ เปเบฅเบฐ peAH OS เบ‚เบญเบ‡

เบเบฒเบ™เบชเป‰เบฒเบ‡ variant เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบญเบทเปˆเบ™. เปƒเบซเป‰เป€เบญเบปเบฒเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ a
เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ baNaNa เปเบฅเบฐ peAcH. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰,
เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเปเบˆเบเบขเบฒเบ, เป€เบŠเบฑเปˆเบ™ NFS เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบฐเบšเบปเบšเบชเบฐเป€เบžเบฒเบฐ, เปเบฅเบฐ
เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบ”เป†เบ‚เบญเบ‡
`เบ‚เปเป‰เป€เบชเบ'. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เป‰ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!
เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ:

# เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ!

die qq(OS เบ•เป‰เบญเบ‡เบ–เบทเบเบฅเบฐเบšเบธ) เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆ $OS = $ARG{OS};
die qq (OS เบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™ "peach" เบซเบผเบท "banana")
เบ–เป‰เบฒ $OS ne "peach" && $OS ne "banana";

# เบšเปˆเบญเบ™เปƒเบ”เบงเบฒเบ‡เบชเบดเบ™เบ„เป‰เบฒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”.
$EXPORT = "#export/$OS";

เบชเบปเปˆเบ‡เบญเบญเบ q(CONS เบฅเบงเบกเบกเบต LIB BIN );

# เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™.
$INCLUDE = "$EXPORT/เบฅเบงเบก";
$LIB = "$EXPORT/lib";
$BIN = "$EXPORT/bin";

# เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
$CONS = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ (
CPPPATH => $INCLUDE, # เบฅเบงเบกเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเบณเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™ C
LIBPATH => $LIB, # เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบชเบณเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
LIBS => '-lworld', # เบฅเบฒเบเบŠเบทเปˆเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
);

# $BUILD เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบญเบปเบฒเบกเบฒเปƒเบซเป‰เบ—เบธเบเบขเปˆเบฒเบ‡.
$BUILD = "#build/$OS";

# เบšเบญเบเบ‚เปเป‰เป€เบชเบเบงเปˆเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบ‚เบญเบ‡ $BUILD เบขเบนเปˆเปƒเบช.
เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ $BUILD => 'src';

เบเปเปˆเบชเป‰เบฒเบ‡ (
"$BUILD/hello/Conscript",
"$BUILD/world/Conscript",
);

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš peAcH, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบฑเป‰เบ™
เป€เบงเบ—เบต:

% cons เบชเบปเปˆเบ‡เบญเบญเบ OS=peach
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/peach/world/world.h เป€เบ›เบฑเบ™ export/peach/include/world.h
cc -Iexport/peach/include -c build/peach/hello/hello.c -o build/peach/hello/hello.o
cc -Iexport/peach/include -c build/peach/world/world.c -o build/peach/world/world.o
ar r build/peach/world/libworld.a build/peach/world/world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ build/peach/world/libworld.a
ranlib build/peach/world/libworld.a
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/peach/world/libworld.a เป€เบ›เบฑเบ™ export/peach/lib/libworld.a
cc -o build/peach/hello/hello build/peach/hello/hello.o -Lexport/peach/lib -lworld
เบ•เบดเบ”เบ•เบฑเป‰เบ‡ build/peach/hello/hello เป€เบ›เบฑเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ/peach/bin/hello

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ on a เบซเบปเบงเบ‚เปเป‰

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบšเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบžเบทเปˆเบญเปเบเบเป€เบญเบปเบฒเป„เบŸเบฅเปŒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบญเบญเบเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบงเบ—เบต เปเบฅเบฐเป„เบŸเบฅเปŒเป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เป€เบงเบ—เบต.
เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบ›เบฑเบ™ `$INCLUDE' เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบš
เป„เบŸเบฅเปŒ. เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ, เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบงเบ—เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบขเปˆเบฒเบ‡เบ”เบฝเบงเบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒ, เบˆเบฐ
เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ”เป‰เบงเบเบเบฒเบ™เบ”เบตเบšเบฑเบ เบซเบผเบทเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ,
เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบทเบญเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบŠเบฑเปˆเบ™:
`DEBUG=on'. เบ™เบตเป‰เบˆเบฐเบ–เบทเบเปเบ›เป€เบ›เบฑเบ™เป€เบงเบ—เบตเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเบฐเป€เบžเบฒเบฐ
เบ‚เปเป‰โ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบ›เบตเบ”โ€‹เปƒเบŠเป‰โ€‹เบ‡เบฒเบ™ debugging (เบ™เบตเป‰โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบฅเบงเบกโ€‹เป€เบ–เบดเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบดเบ”โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เบ•เบปเบงเบขเปˆเบฒเบ‡). เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ›เปˆเบฝเบ™โ€‹เบŠเบทเปˆโ€‹เบŠเปˆเบญเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰โ€‹,
เปเบ•เปˆ, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบซเบฑเบ™เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™ เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™ เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Cons เปเบกเปˆเบ™เบ‡เบฒเบก
เบชเบฐเบซเบฅเบฒเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ›เปˆเบฝเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เบฅเบฒเบเป€เบŠเบฑเบ™


MD5 เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบš เบฅเบฒเบเป€เบŠเบฑเบ™

เป€เบกเบทเปˆเบญเปƒเบ”เบเปเปˆเบ•เบฒเบก Cons เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ, เบกเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ a เบฅเบฒเบเป€เบŠเบฑเบ™ เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ™เบฑเป‰เบ™. เบฅเบฒเบเป€เบŠเบฑเบ™
เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เบซเบ™เบถเปˆเบ‡เบ•เปเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เบซเบผเบฑเบ‡เบˆเบฒเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป„เบ”เป‰เบ–เบทเบเบฅเบงเบšเบฅเบงเบก,
เป„เบ”เป‰ .เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเปƒเบ™ build/peach/world เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

world.o:834179303 23844c0b102ecdc0b4548d1cd1cbd8c6
libworld.a:834179304 9bf6587fa06ec49d864811a105222c00

เบ•เบปเบงเป€เบฅเบเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบชเบฐเปเบ•เบกเป€เบงเบฅเบฒ - เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš UNIX, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™
เบงเบดเบ™เบฒเบ—เบตเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบงเบฑเบ™เบ—เบต 1 เบกเบฑเบ‡เบเบญเบ™ 1970. เบ„เปˆเบฒเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™ MD5 checksum. เป„เบ”เป‰ เบ‚เปเป‰เบ„เบงเบฒเบก เบเปˆเบญเบเบญเบฒเบซเบฒเบ™
เบฅเบฐเบšเบปเบšเบงเบดเป€เบ„เบฒเบฐ เปเบกเปˆเบ™เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆ, เปƒเบซเป‰เบชเบฐเบ•เบฃเบดเบ‡เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™, เบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฑเบšเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡
เบฅเบฒเบเป€เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฒเบเบ™เบฑเป‰เบ™. MD5 checksum เป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ .เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเปเบกเปˆเบ™, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, a
เบเปˆเบญเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปเบฒเบฅเบฑเบš
world.o เป„เบŸเบฅเปŒ, เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ world.c เป„เบŸเบฅเปŒ, เปเบฅเบฐเป„เบŸเบฅเปŒ header เปƒเบ”เป†เบ—เบตเปˆ Cons
เบฎเบนเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบฅเบงเบกโ€‹, เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹เบซเบผเบทโ€‹เป‚เบ”เบโ€‹เบ—เบฒเบ‡โ€‹เบญเป‰เบญเบกโ€‹เป‚เบ”เบโ€‹ world.c. เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบงเปˆเบฒ
เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เบปเบงเบˆเบดเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ world.o เบเบฑเบ‡เบ–เบทเบเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ‚เบญเบ‡
เบฅเบฒเบเป€เบŠเบฑเบ™. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, libworld.a เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบฅเบฒเบโ€‹เป€เบŠเบฑเบ™โ€‹เบ—เบตเปˆ ``เบฅเบงเบกโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™ (เปเบฅเบฐเป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, transitively, เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡ เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ
constituents), เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ.

เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบกเบฒเบˆเบฒเบเบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆ, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป‚เบ”เบเบเบฒเบ™เป€เบญเบปเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™
เป€เบงโ€‹เบฅเบฒโ€‹เบเบฒเบ™โ€‹เบ”เบฑเบ”โ€‹เปเบเป‰โ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เปเบฅเบฐโ€‹เบŠเบทเปˆโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบ‚เบญเบ‡โ€‹เป„เบŸเบฅโ€‹เปŒ (เป€เบงเบฑเป‰เบ™โ€‹เป€เบชเบโ€‹เปเบ•เปˆโ€‹เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เป€เบ›เบฑเบ™ a
เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™ .เบชเบปเปˆเบ‡ เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ™เบฑเป‰เบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ™เบฑเป‰เบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰).

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเป€เบžเบทเปˆเบญเบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡ เบเปเปˆเบชเป‰เบฒเบ‡ or
เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ - เบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ„เปเบฒเบ–เบฒเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™
เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ•เบปเบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ‚เบญเบ‡เบชเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™
เบฅเบงเบกเบขเบนเปˆเปƒเบ™เบฅเบฒเบเป€เบŠเบฑเบ™. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบˆเบฐเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบš.

เป€เบกเบทเปˆเบญ Cons เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบˆเบฐเบกเบฒเบˆเบฒเบเป„เบŸเบฅเปŒเปƒเบ”เบ™เบถเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เป„เบฅเปˆ
เบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰เบ‚เบญเบ‡เป„เบŸเบฅเปŒ. เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ›เบฝเบšเบ—เบฝเบšเป€เบงเบฅเบฒเบ”เบฑเบ”เปเบเป‰เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบฑเบš
เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบšเบฑเบ™โ€‹เบ—เบถเบโ€‹เป„เบงเป‰โ€‹เปƒเบ™โ€‹ .เบชเบปเปˆเบ‡ เป€เบ‚เบปเป‰เบฒ, เบ–เป‰เบฒเบกเบตเบขเบนเปˆ. เบ–เป‰เบฒเป€เบงเบฅเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบปเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เบฅเบฒเบเป€เบŠเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™ .เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเบ–เบทเบเบ•เป‰เบญเบ‡. เบ–เป‰เบฒเป„เบŸเบฅเปŒเบœเปˆเบฒเบ™เบกเบฒ
เบฅเบฒเบเป€เบŠเบฑเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบšเบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰เปƒเปเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบ–เบญเบ”เบ–เบญเบ™เบ„เบทเบ™.

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเป„เบŸเบฅเปŒเบˆเบฐเบ–เบทเบเบ–เบญเบ”เบ–เบญเบ™เบ„เบทเบ™เบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบš. เปƒเบ™
เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ เปƒเบ” เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบเบฒเบ™โ€‹เบ”เบฑเบ”โ€‹เปเบเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบš (เบ•เปเปˆโ€‹เบซเบ™เป‰เบฒโ€‹เบซเบผเบทโ€‹
เบ–เบญเบเบซเบผเบฑเบ‡เปƒเบ™เป€เบงเบฅเบฒ) เบˆเบฐเบšเบฑเบ‡เบ„เบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบฒเบเป€เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡
เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ - เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ - เบเบฒเบ™เปเบœเปˆเบžเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเปเบ”เบ‡เบชเบดเปˆเบ‡เบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเป†:

# เบ‡เปˆเบฒเบเป† "เบชเบฐเบšเบฒเบเบ”เบตเป‚เบฅเบ!" เบเปเปˆเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ
$CFLAGS = '-g' เบ–เป‰เบฒ $ARG{DEBUG} eq 'on';
$CONS = new cons(CFLAGS => $CFLAGS);
เป‚เบ„เบ‡เบเบฒเบ™ $CONS 'เบชเบฐเบšเบฒเบเบ”เบต', 'hello.c';

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™ Cons recompiles เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก:

% cons เบชเบฐเบšเบฒเบเบ”เบต
cc -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o
% cons เบชเบฐเบšเบฒเบเบ”เบต
cons: "เบชเบฐเบšเบฒเบเบ”เบต" เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.
% cons DEBUG=เบชเบฐเบšเบฒเบเบ”เบต
cc -g -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o
% cons DEBUG=เบชเบฐเบšเบฒเบเบ”เบต
cons: "เบชเบฐเบšเบฒเบเบ”เบต" เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.
% cons เบชเบฐเบšเบฒเบเบ”เบต
cc -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o

เบฅเบฐเบซเบฑเบ” เบšเบฑเบ™เบ”เบฒเบซเปเบ›เบฐเบŠเบธเบก


เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบˆเบฐเบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบฅเบฐเบšเบปเบš repository เบชเบนเบ™เบเบฒเบ‡
เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเป‚เบ„เบ‡เบเบฒเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ
เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰. เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™,
เบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เป„เบŸเบฅเปŒเบˆเบฒเบ repository เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบญเบšเปเบงเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ - เบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™, เบ‚เบญเบ‡
เปเบ™เปˆเบ™เบญเบ™, เบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบญเบฑเบ™เปƒเบซเบกเปˆเบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

Repository

Cons เบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ repositories เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒ,
in-order, เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบšเปเปˆเบžเบปเบšเบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ build directory เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เปเบ–เบงเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบ™ a เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบˆเบฐเปเบ™เบฐเบ™เปเบฒ Cons เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบžเบฒเบเปƒเบ•เป‰
/usr/experiment/repository directory เปเบฅเบฐโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบฒเบโ€‹เปƒเบ•เป‰โ€‹เบเบฒเบ™โ€‹ /usr/product/repository เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต:

Repository qw (
/usr/experiment/repository
/usr/product/repository
);

เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repository เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบญเบฒเบ”เบกเบตเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡, เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ (objects,
เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”), เบซเบผเบทเบ—เบฑเบ‡เบชเบญเบ‡. เบ–เป‰เบฒเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ (เปเบซเบผเปˆเบ‡เบซเบผเบทเบกเบฒเบˆเบฒเบ) เบžเบฒเบเปƒเบ•เป‰
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆ Cons เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเปเบฒเป€เบ™เบปเบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบžเบปเบš
เบžเบฒเบเปƒเบ•เป‰เบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡ repository เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปƒเบ”เป†.

Cons เบฎเบฑเบเบชเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบปเปˆเบงเป‚เบฅเบเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repositories. Cons เบˆเบฐโ€‹เบฅเบปเบšโ€‹เบฅเป‰เบฒเบ‡โ€‹
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™, เปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบˆเบฒเบเบฅเบฒเบเบŠเบทเปˆ.

เบŠเบญเบ เป„เบ”เป‰ เบเปเปˆเบชเป‰เบฒเบ‡ เป€เบญเบเบฐเบชเบฒเบ™ in a Repository

Cons เบเบฑเบ‡เบˆเบฐเบ„เบปเป‰เบ™เบซเบฒเบชเปเบฒเบฅเบฑเบš เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเปƒเบ™ repository tree เบซเบผเบทเบ•เบปเป‰เบ™เป„เบกเป‰.
เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป„เบเปˆเปเบฅเบฐเป„เบ‚เปˆ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ: เป€เบˆเบปเป‰เบฒเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ repository เปเบ™เบงเปƒเบ”
เบชเปเบฒโ€‹เบฅเบฑเบš เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบขเบนเปˆเปƒเบช? เป„เบ”เป‰โ€‹เบฎเบฑเบš
เบ›เบฐเบกเบฒเบ™เบ™เบตเป‰, repositories เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ `-R' เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡:

% cons -R /usr/experiment/repository -R /usr/product/repository .

เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repository เปƒเบ”เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ เบเปเปˆเบชเป‰เบฒเบ‡ or เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบˆเบฐเบ–เบทเบเบ•เปเปˆเบ—เป‰เบฒเบ
เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repository เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบ•เบปเบงเป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡ `-R'.

Repository เปเบซเบผเปˆเบ‡ เป„เบŸ

เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡ (เบฅเบงเบกเบ—เบฑเบ‡ เบ—เบฐเบšเบฝเบ™ file) เบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ‚เบญเบ‡ เบชเบฐเบšเบฒเบเบ”เบต,
เป‚เบฅเบ! เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ C เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ (เบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ), Cons เบˆเบฐเปƒเบŠเป‰
repository เปเบซเบผเปˆเบ‡เป„เบŸเบฅเปŒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบฅเบฐเป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰:

% cons -R /usr/src_only/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c /usr/src_only/repository/hello.c -o hello.o
gcc -c /usr/src_only/repository/world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ Cons เบเปเปˆเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบท
เปเบŸเป‰เบก:

% pico world.c
[เปเบเป‰เป„เบ‚]
% cons -R /usr/src_only/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

เปเบฅเบฐเบเบฒเบ™เป€เบญเบปเบฒเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบญเบญเบเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ Cons เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบฒเบˆเบฒเบ
เป„เบŸเบฅเปŒเบˆเบฒเบเปเบซเบผเปˆเบ‡ repository:

% rm world.c
% cons -R /usr/src_only/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c /usr/src_only/repository/world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

Repository derived เป„เบŸ

เบ–เป‰เบฒเบ•เบปเป‰เบ™เป„เบกเป‰ repository เบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบซเบผเบท
executables), Cons เบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบ•เบปเบ™เป€เบžเบทเปˆเบญเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบšเปเปˆเบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™
เป„เบŸเบฅเปŒ repository เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบกเบซเบผเบทเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ™เบตเป‰โ€‹เบซเบกเบฒเบโ€‹เบ„เบงเบฒเบกโ€‹เบงเปˆเบฒโ€‹,
เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเป€เบเบฑเบšเบกเป‰เบฝเบ™เบเบฑเบ‡เบ•เป‰เบญเบ‡เบกเบต
.เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบ Cons เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ.

เบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบˆเบฐเบชเปเบฒเป€เบฅเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบญเบšเปเบงเปƒเบ™ repository (เบซเบผเบท,
เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเป‰เบฒเบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เบฑเบ”เบฅเบญเบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™):

% cd /usr/all/repository
% cons เบชเบฐเบšเบฒเบเบ”เบต
gcc -c hello.c -o hello.o
gcc -c world.c -o world.o
ar r libworld.a world.o
ar: เบเบฒเบ™เบชเป‰เบฒเบ‡ libworld.a
ranlib libworld.a
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o libworld.a

(เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบฅเบฒเบเบŠเบทเปˆ /usr/all/repository เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ™ a
เบ„เปเบฒเบชเบฑเปˆเบ‡ 'Repository' เป€เบžเบฒเบฐเบงเปˆเบฒ Cons เบˆเบฐเป€เบญเบปเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบญเบญเบเบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ.)

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เป‰เบงเบเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡ เบชเบฐเบšเบฒเบเบ”เบต.c เป„เบŸเบฅเปŒ, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบฑเบ™เบซเบ™เบถเปˆเบ‡, เปเบฅเบฐเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ `-R' เบ—เบตเปˆเบˆเบฐเบกเบต cons เปƒเบŠเป‰เบญเบทเปˆเบ™เป†
เป„เบŸเบฅโ€‹เปŒโ€‹เบˆเบฒเบ repositoryโ€‹:

% mkdir $HOME/build1
% cd $HOME/Build1
%ed hello.c
[เปเบเป‰เป„เบ‚]
% cons -R /usr/all/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c hello.c -o hello.o
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o /usr/all/repository/libworld.a

เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒ Cons เบšเปเปˆโ€‹เป„เบ”เป‰ bothered เบเบฑเบš recreate เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹ libworld.a เบซเปเบชเบฐเบซเบกเบธเบ” (เบซเบผเบท recomple the
world.o module), เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเปเบฅเป‰เบงเบˆเบฒเบ repository.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบฅเบฒเบเป€เบŠเบฑเบ™ MD5 เบ—เบตเปˆ Cons เบงเบฒเบ‡เป„เบงเป‰เปƒเบ™ .เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเบกเบตเป€เบงเบฅเบฒเบ›เบฐเบ—เบฑเบšเบ•เบฒเบชเปเบฒเบฅเบฑเบš
เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ, เบเบฒเบ™เบชเบฐเปเบ•เบกเป€เบงเบฅเบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเป€เบงเบฅเบฒเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™
เบ–เบทเบงเปˆเบฒเบ–เบทเบเบ•เป‰เบญเบ‡.

เบšเบฒเบ‡เบฅเบฐเบšเบปเบšเบŠเบญเบŸเปเบงเบญเบฒเบ”เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบงเบฅเบฒเปƒเบ™เป„เบŸเบฅเปŒ repository (เป‚เบ”เบเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบžเบงเบเบกเบฑเบ™,
eg), เปƒเบ™เบเปเบฅเบฐเบ™เบต Cons เบˆเบฐ, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡ repository เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.
เปเบฅเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปƒเบซเบกเปˆเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธ:

Repository_Sig_Times_OK 0;

เบ™เบตเป‰เบšเบญเบ Cons เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบปเบ™เปƒเบˆเป€เบงเบฅเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. (เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹
เบงเปˆเบฒเบเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบเบงเบ”เบเบฒเบชเบธเบ‚เบฒเบžเบดเบšเบฒเบ™เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบš repository
เบ•เบปเป‰เบ™เป„เบกเป‰เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ .เบชเบปเปˆเบ‡
เบฅเบฒเบเป€เบŠเบฑเบ™.)

เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ เบชเปเบฒเป€เบ™เบปเบฒ of เป„เบŸ

เบ–เป‰เบฒเบ•เบปเป‰เบ™เป„เบกเป‰ repository เบกเบตเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบชเป‰เบฒเบ‡เบˆเบฒเบ
repository เป‚เบ”เบเบšเปเปˆเบกเบตเป„เบŸเบฅเปŒเปƒเบ”เป†เบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆเบ›เบฒเบ™เบเบฒเบ‡
เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™:

% mkdir $HOME/build2
% cd $HOME/Build2
% cons -R /usr/all/repository เบชเบฐเบšเบฒเบเบ”เบต
cons: "เบชเบฐเบšเบฒเบเบ”เบต" เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.

Cons เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบงเบปเป‰เบฒเบงเปˆเบฒ เบชเบฐเบšเบฒเบเบ”เบต เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบต เบชเบฐเบšเบฒเบเบ”เบต program in
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปเปˆเบชเป‰เบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ (เบšเปเปˆเปเบกเปˆเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™) เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ
up-to-date เบชเบฐเบšเบฒเบเบ”เบต เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เปเบฅเบฐ Cons เบ–เบทเบโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบขเปˆเบฒเบ‡โ€‹เบ–เบทเบโ€‹เบ•เป‰เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบซเบเบฑเบ‡โ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป€เบฎเบฑเบ”โ€‹เป„เบ”เป‰โ€‹
เบชเป‰เบฒเบ‡เบชเบณเป€เบ™เบปเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เปเบ™เบตเป‰เบ„เบทเบ™เปƒเปเปˆ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบกเบฑเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡ a
เป„เบŸเบฅเปŒเบกเบตเบขเบนเปˆเบชเบฐเป€เปเบต. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบซเบผเบทเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบญเบฒเบ”เบˆเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเปเบ™เปˆเบ™เบญเบ™
เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบกเบตเบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบ„เบฃเบดเบšเบเปˆเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบฎเบนเป‰เป€เบ–เบดเบ‡
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repository, เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™' เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ a เบเปเปˆเบชเป‰เบฒเบ‡ or เบ—เบฐเบšเบฝเบ™ file to
เบฅเบฐเบšเบธเบงเปˆเบฒเป„เบŸเบฅเปŒ เบซเบผเบทเป„เบŸเบฅเปŒเปƒเบ”เปœเบถเปˆเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบตเบชเป‰เบฒเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™:

เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ qw(
เบชเบฐเบšเบฒเบเบ”เบต
);

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™เบ„เบทเบ™เปƒเบซเบกเปˆ, Cons เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบˆเบฒเบ
เบชเปเบฒเป€เบ™เบปเบฒ repository (เบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบกเบฑเบ™เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ™เบฑเป‰เบ™):

% cons -R /usr/all/repository เบชเบฐเบšเบฒเบเบ”เบต
เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบชเบฐเบšเบฒเบเบ”เบตเบˆเบฒเบ /usr/all/repository/hello
cons: "เบชเบฐเบšเบฒเบเบ”เบต" เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบเบฒเบ™เบเบฐเบ—เปเบฒเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™ "เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡" เบ‚เบญเบ‡
เบชเบฐเบšเบฒเบเบ”เบต เป„เบŸเบฅเปŒ, Cons เบเบฑเบ‡เบฅเบฒเบเบ‡เบฒเบ™เบงเปˆเบฒเบกเบฑเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเปเบฒเป€เบ™เบปเบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบ”เบฑเบšเบเบฒเบ‡ (เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบญเบทเปˆเบ™เป†) เบœเปˆเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบ•เบดเบ”เบ•เบฑเป‰เบ‡'.
เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบ•เบดเบ”เบ•เบฑเป‰เบ‡' เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ 'เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™' companion เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™
เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆ Cons เบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ 'Install_Local' เป€เบ›เบฑเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบชเบฐเบ”เบงเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบ—เบฑเบ‡เบชเบญเบ‡:

Install_Local $env, '#export', 'เบชเบฐเบšเบฒเบเบ”เบต';

เป€เบ—เบปเปˆเบฒเบเบฑเบš:

เบ•เบดเบ”เบ•เบฑเป‰เบ‡ $env '#export', 'hello';
เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ '#export/hello';

เบ—เบฑเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ 'Local' เปเบฅเบฐ 'Install_Local' เบ›เบฑเบšเบ›เบธเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ .เบชเบปเปˆเบ‡ เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบต
เบฅเบฒเบเป€เบŠเบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

Repository เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบชเบฐเปเบเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, Cons เบˆเบฐเบ„เบปเป‰เบ™เบซเบฒเบ•เบปเป‰เบ™เป„เบกเป‰ repository เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบก
.h เป„เบŸเบฅเปŒ. เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบเบฑเบ‡เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰ repository, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™
เบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒ .h เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ เบชเบฐเบšเบฒเบเบ”เบต.c
เป„เบŸเบฅเปŒเบ›เบฐเบเบญเบšเบกเบต เบชเบฐเบšเบฒเบเบ”เบต เป„เบŸเบฅเปŒเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™:

% cons -R /usr/all/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c /usr/all/repository/hello.c -o hello.o
/usr/all/repository/hello.c:1: hello.h: เบšเปเปˆเบกเบตเป„เบŸเบฅเปŒ เบซเบผเบทเบฅเบฒเบเบŠเบทเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป„เบ›เบชเบนเปˆเบงเบดเบ—เบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก
เบเปเบฒเบ™เบปเบ”เปเบฅเบฐเป„เบ›เบชเบนเปˆเบงเบดเบ—เบตเบเบฒเบ™ C `#include' preprocessor directive เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเบเบญเบšเบกเบตเป„เบŸเบฅเปŒ.

เป€เบžเบทเปˆเบญเปเบˆเป‰เบ‡เปƒเบซเป‰เบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰ repository, Cons เบˆเบฐเป€เบžเบตเปˆเบก "-I" เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.
เบ—เบธเบ‡เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ•เบปเบงเปเบ› 'CPPPATH' เปƒเบ™
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒ
เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบฅเบงเบก, เบฅเบงเบกเบ—เบฑเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡
เบ•เบปเบงเบขเปˆเบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบ™ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$env = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ(
CC => 'gcc',
CPPPATH => '.',
LIBS => 'libworld.a',
);

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบ•เบปเบงเปเบ› 'CPPPATH', เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ™เบตเป‰, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆ.
เบ„เปเบฒเบชเบฑเปˆเบ‡:

% cons -R /usr/all/repository เบชเบฐเบšเบฒเบเบ”เบต
gcc -c -I. -I/usr/all/repository /usr/all/repository/hello.c -o hello.o
gcc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o /usr/all/repository/libworld.a

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เบธเบ‡ `-Iโ€ replicates, เบชเปเบฒเบฅเบฑเบš C preprocessor, repository เบ”เบฝเบงเบเบฑเบ™-
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆ Cons เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบ–เป‰เบฒเบกเบต
เบซเบผเบฒเบ repositories เปเบฅเบฐเบซเบผเบฒเบ 'CPPPATH' directory, Cons เบˆเบฐเป€เบžเบตเปˆเบกเป€เบ•เบตเบก repository
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป„เบ›เบซเบฒเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเป„เบ”เป€เบฃเบฑเบเบ—เปเบฃเบต 'CPPPATH', เบเบฒเบ™เบ„เบนเบ™เบˆเบณเบ™เบงเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ
เบ‚เบญเบ‡เบ—เบธเบ‡ '-I'. เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบชเบธเบ”, a เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบ›เบฐเบเบญเบšเบกเบต:

Repository qw(
/u1
/u2
);

$env = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ(
CPPPATH => 'a:b:c',
);

เบˆเบฐเปƒเบซเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เบญเบ‡:

cc -Ia -I/u1/a -I/u2/a -Ib -I/u1/b -I/u2/b -Ic -I/u1/c -I/u2/c -c hello.c -o เบชเบฐเบšเบฒเบเบ”เบต.o

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ Cons เบญเบตเบ‡เปƒเบชเปˆเบ—เบธเบ‡ `-I' เบ‚เบญเบ‡ compiler เป€เบžเบทเปˆเบญเบชเบทเปˆเบชเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต repository เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒ, Cons 'เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เบญเบ‡ repository directory เปเบกเปˆเบ™
เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบชเบญเบ‡เบงเบปเบ‡เบขเบทเบกเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ `#include' เปƒเบ™ C เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.
เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡:

#include "file.h" /* เบขเปˆเบฒเปƒเบŠเป‰เบชเบญเบ‡เบ„เบณเป€เบงเบปเป‰เบฒเปเบšเบšเบ™เบตเป‰ */

เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒ C preprocessors เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เป€เบกเบทเปˆเบญเบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบˆเบฐเบ—เปเบฒเบญเบดเบ”เบชเบฐเป€เบซเบกเบต
เบ„เบปเป‰เบ™เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบญเบฑเบ™เบ™เบตเป‰เบ—เปเบฒเบฅเบฒเบเบ„เบงเบฒเบกเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡ `-เบ‚เป‰เบญเบโ€.
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆ Cons เบเปเปˆเบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰ preprocessor เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰ repository เปƒเบ™ Cons, เบชเบฐเป€เบซเบกเบตเป„เบ› เปƒเบŠเป‰เบงเบปเบ‡เป€เบฅเบฑเบšเบกเบธเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบก
เปเบŸเป‰เบก:

#เบฅเบงเบกเบ—เบฑเบ‡ /* เปƒเบŠเป‰ ANGLE-BRACKETS เปเบ—เบ™ */

Repository_List

Cons เบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ 'Repository_List' เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ„เบทเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ repository directory เบ—เบฑเบ‡เบซเบกเบปเบ”
เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ debugging, เบซเบผเบทเป€เบฎเบฑเบ” Perl เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบ
เบชเบดเปˆเบ‡เบ‚เบญเบ‡:

@list =Repository_List;
เบžเบดเบกเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก(' ', @list), "\n";

Repository เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบฎเปˆเบงเบกเบเบฑเบ™ เบเบฑเบš เบญเบทเปˆเบ™เป† cons เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ

Cons 'เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ repository เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐ Cons เบญเบทเปˆเบ™เป† - เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™
เป€เบงเบปเป‰เบฒ, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบฑเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡.

เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ repository เป‚เบ•เป‰เบ•เบญเบšเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเบกเบตเบญเปเบฒเบ™เบฒเบ”เบซเบผเบฒเบ, เบ”เป‰เบงเบ 'Link'
เบ„เปเบฒเบชเบฑเปˆเบ‡. เบ•เบปเป‰เบ™เป„เบกเป‰ repository เบญเบฒเบ”เบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบš
เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบœเปˆเบฒเบ™ 'เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ' เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเปเบซเบผเปˆเบ‡. Cons เบˆเบฐเบ„เบปเป‰เบ™เบซเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเปƒเบ™
เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปˆเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบžเบฒเบเปƒเบ•เป‰เบ•เบปเป‰เบ™เป„เบกเป‰ repository.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ


เบˆเบปเบ™เบเปˆเบงเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เป€เบญเบตเป‰เบ™ Cons เบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡:

% cons เบชเบฐเบšเบฒเบเบ”เบต

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, Cons เบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบดเปˆเบ‡เปƒเบ”, เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบเปเบฒเบ™เบปเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เปเบ•เปˆเบฅเบฐเบšเบธ '.'
(เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™) เบˆเบฐเบชเป‰เบฒเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡:

%cons # เบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡เบซเบเบฑเบ‡

% cons . # เบชเป‰เบฒเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบžเบฒเบเปƒเบ•เป‰เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”

เบเบฒเบ™เป€เบžเบตเปˆเบกเบงเบดเบ—เบตเบเบฒเบ™ 'เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™' เปƒเบชเปˆเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡ เบเปเปˆเบชเป‰เบฒเบ‡ or เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบˆเบฐเป€เบžเบตเปˆเบกเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰
เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป„เบ›เบซเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. Cons เบˆเบฐเบชเป‰เบฒเบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เป‰เบฒเบšเปเปˆเบกเบต
เป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เบณเบชเบฑเปˆเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบชเบฑเป‰เบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”
เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบˆเบฐเป€เบฎเบฑเบ”เบ•เบฒเบกเบžเบถเบ”เบ•เบดเบเปเบฒเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡ Make เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™:

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ '.';

เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเป€เบžเบตเปˆเบก เบชเบฐเบšเบฒเบเบ”เบต เปเบฅเบฐ เบฅเบฒเบเปˆเบญเบ™ เบ„เปเบฒเบชเบฑเปˆเบ‡ (เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš
เบเปเปˆเบชเป‰เบฒเบ‡ or เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅโ€‹เปŒโ€‹) เบเบฑเบšโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹:

เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ qw(
เบชเบฐเบšเบฒเบเบ”เบต
เบฅเบฒเบเปˆเบญเบ™
);

เบงเบดเบ—เบตเบเบฒเบ™ 'เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™' เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบชเปˆเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

Selective เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™


Cons เบชเบฐเบซเบ™เบญเบ‡เบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเป‰. เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธ
เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเบ”เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡. เบ”เบต
เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเบฐเป€เบžเบฒเบฐเป€เบ›เบปเป‰เบฒเปเบฒเบเบเปˆเบญเบ™.

Selective เบเบฒเบ™เบเปเบฒเบซเบ™เบปเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰, Cons เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ `` เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ '' เปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. Cons เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบซเบผเบทเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เป€เบกเบทเปˆเบญเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเบฅเบฐเบšเบธ, เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฑเป‰เบ™
เบซเบกเบฒเบเป€เบซเบ”เบกเบทเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ - เบ—เบตเปˆ Cons เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš - เปƒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰
directory เปเบฅเบฐเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

% cons build/hello/hello.o

เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบšเบฒเบเบ”เบต เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ™เบฑเป‰เบ™ เบชเบฐเบšเบฒเบเบ”เบต เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ เบชเบฐเบšเบฒเบเบ”เบต, เป‚เบฅเบ! เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹ เบชเบฐเบšเบฒเบเบ”เบต เบ‚เบถเป‰เบ™เบเบฑเบš
เบชเบปเปˆเบ‡เบญเบญเบ/include/world.h. เบ–เป‰เบฒเป„เบŸเบฅเปŒเบ™เบฑเป‰เบ™เบšเปเปˆเบ—เบฑเบ™เบชเบฐเป„เป (เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบ„เบปเบ™เบ”เบฑเบ”เปเบเป‰
src/world/world.h), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบˆเบฒเบ
build/เบชเบฐเบšเบฒเบเบ”เบต.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰:

% cons เบเปเปˆเบชเป‰เบฒเบ‡

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบŸเบฅเปŒเบซเบผเบฒเบ
เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เบ—เบฑเบ‡เบชเบญเบ‡ เบชเบปเปˆเบ‡เบญเบญเบ/include/world.h เปเบฅเบฐ เบชเบปเปˆเบ‡เบญเบญเบ/lib/libworld.a เบกเบต
เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ build/เบชเบฐเบšเบฒเบเบ”เบต เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบฅเป‰เบฒเบชเบฐเป„เบซเบก.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ:

% cons เบชเบปเปˆเบ‡เบญเบญเบ

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบเบฒเบ™โ€‹เบชเบปเปˆเบ‡โ€‹เบญเบญเบโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เปƒเบซเบกเปˆโ€‹, เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹
เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ 'cons build' เบญเบฒเบ”เบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆ 'cons
เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ 'เบšเปเปˆเป„เบ”เป‰เบชเป‰เบฒเบ‡, เปเบฅเบฐเปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™.

No ``เบžเบดเป€เบชเบ”'' เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ

เบ”เป‰เบงเบเบ‚เปเป‰เป€เบชเบ, เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบš '`เบžเบดเป€เบชเบ”' เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบเบฑเบš Cons
เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบžเบดโ€‹เป€เบชเบ”โ€‹ เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบต a
เบŠเบธเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เบขเบนเปˆเปƒเบ™
เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบเป‰เบเบฑเบšเบฅเบฐเบซเบฑเบ”. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.
เบเบฒเบ™เปเบเป‰เป„เบ‚เบซเบ™เบถเปˆเบ‡เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบญเบตเป‰เบ™เบงเปˆเบฒ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เบˆเบฒเบเบ™เบฑเป‰เบ™:

% cons เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš

เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹.

% cons เบชเบปเปˆเบ‡เบญเบญเบ

เบˆเบฐเบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบš (เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš), เปเบฅเบฐ:

% cons เบเปเปˆเบชเป‰เบฒเบ‡

เบญเบฒเบ”เบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰ (เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบฑเบ™เบˆเบฐเบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™).

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ”เบฝเบงโ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบŠเบทเปˆโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบขเปˆเบฒเบ‡โ€‹เบŠเบฑเบ”โ€‹เป€เบˆเบ™ (เปƒเบ™โ€‹
เบšเปเปˆเบงเปˆเบฒเบˆเบฐ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเบผเบท เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต). เบ™เบญเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ—เบตเปˆเบชเบฐเบ”เบงเบเบžเบฒเบเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡
เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบเบปเบ‡เบเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡, เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™
เบญเบฒเบ”เบˆเบฐเบšเปเปˆเบเบปเบ‡เบเบฑเบšเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เปเบซเบผเปˆเบ‡ (เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบšเปเปˆเบซเบ™เป‰เบฒเบˆเบฐเป€เบ›เบฑเบ™เบซเบผเบฒเบ
เป€เบฅเบดเบเบเบงเปˆเบฒเบชเบญเบ‡เบฅเบฐเบ”เบฑเบš, เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ C).

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰ (เบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ”เบเปเปˆเบ•เบฒเบก
เป€เบฅเบทเบญเบ), เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰:

% cons .

เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบŠเป‰เปเบฒเบเบฑเบ™เบˆเบฐเบเปˆเบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”,
เบฅเบงเบกเบ—เบฑเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบกเบฒเบˆเบฒเบ. เบ•เบปเป‰เบ™เป„เบกเป‰เปเบซเบผเปˆเบ‡, เปเบ™เปˆเบ™เบญเบ™, เบญเบฒเบ”เบˆเบฐเบกเบตเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰
เบกเบฑเบ™ - เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบธเบ”เป€เบˆเบปเป‰เบฒเบˆเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ›เบปเบเบเบฐเบ•เบดเบ—เปˆเบฒเบ™เบˆเบฐเบชเป‰เบฒเบ‡เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ
เบ•เบปเป‰เบ™เป„เบกเป‰.

เบชเป‰เบฒเบ‡ เบเบฒเบ™เบญเบญเบ เบเบณ เบฅเบฑเบ‡เบเบฒเบ


เบชเบปเบกเบ—เบปเบšเบเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ pruning เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡
เบชเป‰เบฒเบ‡. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ peAcH เปเบฅเบฐ baNaNa เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เปเบฅเป‰เบงเบงเปˆเบฒ script-driven
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ pruning เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปƒเบซเป‰เปƒเบ”เป†
เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ‚เบญเบ‡ 'cons'. Cons เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡, เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เบชเบปเบ™เบ—เบดเบชเบฑเบ™เบเบฒเบšเบฑเบ™เบ—เบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆ
เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบงเปˆเบฒเบญเบฑเบ™เปƒเบ” เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ•เบปเบงเบˆเบดเบ‡เป„เบ”เป‰เบฎเบฑเบš ''เบชเป‰เบฒเบ‡' -- เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ›เบฐเบเบญเบš
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

% cons เบเปเปˆเบชเป‰เบฒเบ‡ + เป‚เบฅเบ

argument `+' เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบด Perl. เบ™เบตเป‰, เปเบ™เปˆเบ™เบญเบ™, เป„เบ”เป‰เบ–เบทเบเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡เบขเบนเปˆเบ—เบตเปˆ
เบฅเบฐเบ”เบฑเบš shell เบ–เป‰เบฒเบกเบตเบ•เบปเบงเบฅเบฐเบ„เบญเบ™เป€เบกเบ•เบฒเบ‚เบญเบ‡ shell เบžเบฒเบเปƒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ. เป„เบ”เป‰
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบกเปˆเบ™เบเบปเบ‡เบเบฑเบšเปเบ•เปˆเบฅเบฐเบ„เบปเบ™ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปƒเบ™ 'เบชเป‰เบฒเบ‡'
เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆ scripts เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ—เบตเปˆเบเบปเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบ•เบปเบงเบˆเบดเบ‡
เบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบผเบฒเบเบญเบฑเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเบเบฑเบšเบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™
เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบ„เบฃเบดเบšเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒ.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, the เบชเบฐเบšเบฒเบเบ”เบต เป‚เบ„เบ‡เบเบฒเบ™เบˆเบฐเบšเปเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ Cons เบˆเบฐเบšเปเปˆเบกเบต
เบ„เบงเบฒเบกโ€‹เบฎเบนเป‰โ€‹เบ‚เบญเบ‡ script เป„เบ”เป‰โ€‹ เบชเบฐเบšเบฒเบเบ”เบต/Conscript. เป„เบ”เป‰ libworld.a เบฎเบงเบšเบฎเบงเบกเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒ
เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบกเบตเบชเบญเบ‡เบชเบฒเบกเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ pruning เบœเปˆเบฒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”
เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบžเบฝเบ‡เบžเปเบ‚เบญเบ‡
เบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™, เบˆเปเบฒเบเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡
เบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเบชเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ pruning เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡ recompilation
เบ‚เบญเบ‡เบšเบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเบฅเบงเบšเบฅเบงเบกเบ„เบทเบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เป„เบŸเบฅเปŒ header เบ”เบฑเบ”เปเบเป‰.
เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒ header เปเบกเปˆเบ™เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™, เบซเบผเบทเบงเปˆเบฒ
เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฅเบฐโ€‹เป€เบฅเบตเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ›เบญเบ”โ€‹เป„เบžโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เป„เบกเป‰โ€‹, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹.With Consโ€‹, เป„เบ”เป‰โ€‹
เบ—เบฑเบ”เบชเบฐเบ™เบฐเปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ pragmatic เบ—เบตเปˆเบˆเบฐเบเบญเบกเบฎเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰, เบ”เป‰เบงเบเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ—เบตเปˆ
เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เปƒเบซเบกเปˆโ€‹เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹. เบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบฝเบšเป€เบ—เบปเปˆเบฒ
เป„เบ›เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡ ``เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเปเบฒเบœเบฑเบ”'', เป€เบžเบทเปˆเบญเปเบฒเบเป„เบŸเบฅเปŒเบงเปˆเบฒเบญเบฑเบšเป€เบ”เบ”เบขเปˆเบฒเบ‡เบ–เบฒเบงเบญเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เปƒเบ”เป†เบ—เบตเปˆเป€เบ›เบฑเบ™
เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡ pruning เปเบกเปˆเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบเบฒเบ™เบ›เปˆเบญเบ, เปเบ™เปˆเบ™เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒ
เบงเปˆเบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ pruning (เบกเบฑเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™, เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก,
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบžเบฝเบ‡เปเบ•เปˆเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบˆเบฐเบชเป‰เบฒเบ‡ unconstrained เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐ committing
เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™).

เบŠเบปเปˆเบงเบ„เบฒเบง overrides


Cons เบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ overriding เบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเปเบกเปˆเบ™
เบงเปˆเบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เป„เบŸเบฅเปŒ override เบ—เบตเปˆเบกเบตเบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡ 'override', เปเบฅเบฐเบ—เปˆเบฒเบ™
เบฅเบฐเบšเบธเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ 'cons':

% cons -o เบซเบผเบฒเบเบเบงเปˆเบฒเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ

เบˆเบฐเบชเป‰เบฒเบ‡ เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™ overrides เบ›เบฐเบˆเบธเบšเบฑเบ™
เปƒเบ™ เปƒเบ™เป„เบฅเบเบฐ เป„เบŸเบฅเปŒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเบญเบเบˆเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบ '-o', เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบญเบญเบ
เบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเปเปˆ.

เบ‚เป‰เบฒเบก เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก เบ•เบปเบงเปเบ›

เป„เบŸเบฅเปŒ override เบชเบฒเบกเบฒเบ”เบกเบตเบชเบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™ overrides. เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒ
เบ•เบปเบงเปเบ›. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบˆเบฒเบเปเบ—เบฑเบš `%ENV'
เบ•เบปเบงเปเบ›. เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ” overridden trivally เปƒเบ™เป„เบŸเบฅเปŒ override เป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ‚เบญเบ‡ `%ENV' (เบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰,
เปเบ™เปˆโ€‹เบ™เบญเบ™).

เป„เบ”เป‰ Override เบ„เปเบฒเบชเบฑเปˆเบ‡

เบ›เบฐเป€เบžเบ”เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™ override เปเบกเปˆเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ 'override', เป€เบŠเบดเปˆเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ
เบ™เบตเป‰:

เบฅเบปเบšเบฅเป‰เบฒเบ‡ , => , => , ... ;

เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด regexp เบ–เบทเบเบˆเบฑเบšเบ„เบนเปˆเบเบฑเบšเบ—เบธเบเป†เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบเบœเบนเป‰เบชเบฐเบซเบกเบฑเบ
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบ–เป‰เบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบเบปเบ‡เบเบฑเบ™, เบ„เบนเปˆเบ•เบปเบงเปเบ›/เบ„เปˆเบฒเบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญ
override เบ„เบธเบ™เบ„เปˆเบฒเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ.

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

$CONS = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ(
COPT => '',
CDBG => '-g',
CFLAGS => '%COPT %CDBG',
);

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเป„เบŸเบฅเปŒ override เปƒเบ™เป„เบฅเบเบฐ เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰:

เปเบ—เบ™เบ—เบตเปˆ '\.o$', COPT => '-O', CDBG => '';

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบ "consโ€‹" เบ—เบตเปˆโ€‹เบกเบต "-o overโ€‹" เบ—เบตเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹ .o เป„เบŸเบฅเปŒเป‚เบ”เบเบœเปˆเบฒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ™เบตเป‰เบˆเบฐ
เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบ `-O 'เปเบฅเบฐเบšเปเปˆเบกเบต `-g'. เบเบฒเบ™ override เบชเบฒเบกเบฒเบ”, เปเบ™เปˆเบ™เบญเบ™, เป€เบ›เบฑเบ™
เบˆเปเบฒเบเบฑเบ”เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ”เบฝเบงเป‚เบ”เบเบเบฒเบ™เบ„เบฑเบ”เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ›เบปเบเบเบฐเบ•เบด.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ Hello, World! เป‚เบ„เบ‡เบเบฒเบ™, เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบ”เป‰เบงเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ™เบตเป‰.
เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ Cons เบเปเปˆเบชเป‰เบฒเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ„เบทเบ™เปƒเบซเบกเปˆเป€เบกเบทเปˆเบญเบเบฒเบ™ override เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบซเบผเบทเป€เบญเบปเบฒเบญเบญเบ:

% cons เบชเบฐเบšเบฒเบเบ”เบต
cc -g -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o
% cons -o เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบฐเบšเบฒเบเบ”เบต
cc -O -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o
% cons -o เบซเบผเบฒเบเบเบงเปˆเบฒเบชเบฐเบšเบฒเบเบ”เบต
cons: "เบชเบฐเบšเบฒเบเบ”เบต" เปเบกเปˆเบ™เบ—เบฑเบ™เบชเบฐเป„เบซเบก.
% cons เบชเบฐเบšเบฒเบเบ”เบต
cc -g -c hello.c -o hello.o
cc -o เบชเบฐเบšเบฒเบเบ”เบต hello.o

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡ 'Override' เบžเบฝเบ‡เปเบ•เปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเบปเปˆเบงเบ„เบฒเบง, เปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™
overrides เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบฒเบฐเบงเปˆเบฒ overrides เบšเปเปˆเปเบกเปˆเบ™เป€เบงเบ—เบตเป€เบญเบเบฐเบฅเบฒเบ”เปเบฅเบฐ
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบฎเบนเป‰เบ—เบตเปˆเปƒเบเป‰เบŠเบดเบ”เป€เบเบตเบ™เป„เบ›เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบชเบฐเบ„เบดเบš. เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบปเปˆเบงเบ„เบฒเบง, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เปเบ—เป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบชเบฐเบซเบ™เบญเบ‡, เป€เบงเบปเป‰เบฒ, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™
เบฎเบธเปˆเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบœเบฐเบฅเบดเบ” - เบˆเบฒเบ เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ. เบงเบดเบ—เบตเบ™เบตเป‰
เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฑเบšโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ—เบตเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹เบเบฑเบšโ€‹เป€เบงโ€‹เบ—เบตโ€‹. เบšเปˆเบญเบ™เบ—เบตเปˆ optimizer เบเบฒเบ™เบ„เป‰เบฒ offs เบ•เป‰เบญเบ‡เบเบฒเบ™
เป€เบฎเบฑเบ” (เป„เบŸเบฅเปŒเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเบ”เป‰เบงเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบ•เบฑเบก, เบ•เบปเบงเบขเปˆเบฒเบ‡), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบซเบฅเบฒเบ™ (เปเบฅเบฐเบเบฒเบ™เบชเบทเบšเบžเบฑเบ™) เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบชเบฐเบ„เบดเบš.

เป€เบžเบตเปˆเบกเป€เบ•เบตเบก on เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก


เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบ•เบปเบงเปเบ›

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ a เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™
เปœเป‰เบฒเบเปˆเบญเบ™เปœเป‰เบฒ. เบ”เบฝเบงเบ™เบตเป‰เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเปเบฅเป‰เบงเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰เปƒเบซเป‰เบเบฒเบเป€เบ›เบฑเบ™เบชเบตเบกเบฑเบ‡เบซเบผเบฒเบ. เบกเบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™:

$env = new cons();

เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เป€เบ–เบดเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆเปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ•เบปเบงเป€เบฅเบ
เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบšเบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™. เปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡
เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

CC => 'cc',
CFLAGS => '',
CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
INCDIRPREFIX => '-เบ‚เป‰เบญเบ',
CXX => '%CC',
CXXFLAGS => '%CFLAGS',
CXXCOM => '%CXX %CXXFLAGS %_IFLAGS -c %< -o %>',
LINK => '%CXX',
LINKCOM => '%LINK %LDFLAGS -o %> %< %_LDIRS %LIBS',
LINKMODULECOM => '%LD -r -o %> %<',
LIBDIRPREFIX => '-L',
AR => 'เบญเบฒ',
ARFLAGS => 'r',
ARCOM => "%AR %ARFLAGS %> %<\n%RANLIB %>",
RANLIB => 'ranlib',
AS => 'เป€เบ›เบฑเบ™',
ASFLAGS => '',
ASCOM => '%AS %ASFLAGS %< -o %>',
LD => 'ld',
LDFLAGS => '',
PREFLIB => 'lib',
SUFLIB => '.a',
SUFLIBS => '.so:.a',
SUFOBJ => '.o',
ENV => { 'เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡' => '/ เบ–เบฑเบ‡:/ usr / เบ–เบฑเบ‡' },

เปƒเบ™เบฅเบฐเบšเบปเบš Win32 (Windows NT), เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบกเปˆเบ™ overridden เปƒเบ™
default:

CC => 'cl',
CFLAGS => '/เป‚เบ™เป‚เบฅเป‚เบ',
CCCOM => '%CC %CFLAGS %_IFLAGS /c %< /Fo%>',
CXXCOM => '%CXX %CXXFLAGS %_IFLAGS /c %< /Fo%>',
INCDIRPREFIX => '/เบ‚เป‰เบญเบ',
LINK => 'เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ',
LINKCOM => '%LINK %LDFLAGS /out:%> %< %_LDIRS %LIBS',
LINKMODULECOM => '%LD /r /o %> %<',
LIBDIRPREFIX => '/LIBPATH:',
AR => 'lib',
ARFLAGS => '/เป‚เบ™เป‚เบฅเป‚เบ',
ARCOM => "%AR %ARFLAGS /out:%> %<",
RANLIB => '',
LD => 'เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ',
LDFLAGS => '/nologo ',
PREFLIB => '',
SUFEXE => '.exe',
SUFLIB => '.lib',
SUPLIBS => '.dll:.lib',
SUFOBJ => '.obj',

เบ•เบปเบงเปเบ›เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เปƒเบ™
เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบงเบดเบ—เบตเบเบฒเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเบธเบ”เบ—เป‰เบฒเบเป€เบญเบตเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบฒเบเบ™เบญเบเบˆเบฐเบ—เบปเบ”เปเบ—เบ™เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰
เบ•เบปเบงเปเบ›เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเบธเบ”เบ—เป‰เบฒเบ, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบงเบดเบ—เบตเบเบฒเบ™ 'เบงเบฑเบ”เบ–เบธ' เปƒเบŠเป‰เป€เบงเบฅเบฒ
เบˆเปเบฒ เบ™เบงเบ™ เบ‚เบญเบ‡ เป„เบŸเบฅ เปŒ เปเบซเบผเปˆเบ‡ เปเบฅเบฐ เบˆเบฑเบ” เบเบฒเบ™ เบ—เบตเปˆ เบˆเบฐ เป„เบ”เป‰ เบฎเบฑเบš, เบ–เป‰เบฒ เบซเบฒเบ เบงเปˆเบฒ เบˆเปเบฒ เป€เบ›เบฑเบ™, เบˆเบธเบ” เบ›เบฐ เบชเบปเบ‡ เบ—เบตเปˆ เบชเบญเบ” เบ„เป‰เบญเบ‡ เบเบฑเบ™
เป„เบŸเบฅเปŒ. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

เบงเบฑเบ”เบ–เบธ $env 'foo.c', 'bar.c';

เบ™เบตเป‰เบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, foo.o เปเบฅเบฐ bar.o. เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹
`%CCCOM', เป€เบŠเบดเปˆเบ‡เบ‚เบฐเบซเบเบฒเบเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™, เป„เบ›เบซเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบ•เปˆเบฅเบฐเบงเบฑเบ”เบ–เบธ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ„เบปเป‰เบ™เบซเบฒเบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ•เบทเปˆเบกเบญเบตเบเบžเบฒเบเปƒเบ•เป‰ "เบ„เปเบฒเบชเบฑเปˆเบ‡"
เบงเบดเบ—เบตเบเบฒเบ™, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบญเบทเปˆเบ™เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡, 'CPPPATH' เปเบกเปˆเบ™
เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ‚เบฑเป‰เบ™เบ”เป‰เบงเบเบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”เบ‚เบญเบ‡เบ›เบฐเบเบญเบšเบกเบตเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡
เบœเปˆเบฒเบ™เป„เบ› C preprocessor เปเบฅเบฐเบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบชเบฐเปเบเบ™เป„เบŸเบฅเปŒ C เป€เบžเบทเปˆเบญ
เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก C. เบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ
underscore, เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†, เปเบฅเบฐเบ›เบปเบเบเบฐเบ•เบดเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒ "เบžเบฒเบเปƒเบ™"
เบ•เบปเบงเปเบ›. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบงเบดเบ—เบตเบเบฒเบ™เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ—เบตเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธ
เบˆเบฒเบเปเบซเบผเปˆเบ‡ C, เบ•เบปเบงเปเบ› `_IFLAGS' เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™: เบญเบฑเบ™เบ™เบตเป‰เบเบปเบ‡เบเบฑเบšเบ›เบธเปˆเบก `-I'
เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ C compiler เป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบ `CPPPATH'.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ, เบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™
เบšเปเปˆเป€เบ„เบตเบเบฃเบตเป€เบŠเบฑเบ” (เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ•เบปเบงเปเบ›, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบซเบกเปˆ. เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ™เบตเป‰). เบšเบฒเบ‡เบ•เบปเบงเปเบ›เบžเบฒเบเปƒเบ™, เป€เบŠเบฑเปˆเบ™:
`_IFLAGS' เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบ•เปˆเป€เบกเบทเปˆเบญเบ•เบฑเป‰เบ‡เปเบฅเป‰เบง, เบžเบงเบเบกเบฑเบ™เบเบฑเบ‡เบ„เบปเบ‡เบ„เบปเบ‡เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบŠเบตเบงเบดเบ”เบ‚เบญเบ‡
เบชเบดเปˆเบ‡เปเบงเบ”เบฅเป‰เบญเบก.

เบ•เบปเบงเปเบ› 'CFLAGS', `LDFLAGS', เปเบฅเบฐ `ARFLAGS' เบ—เบฑเบ‡เปเบปเบ”เปเบกเปˆเบ™เบชเบฐเปœเบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเปƒเบซเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”.
compiler, loader, เปเบฅเบฐ archiver, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš. เบซเบ™เป‰เบญเบเปเบ™เปˆเบ™เบญเบ™, "INCDIRPREFIX"
variable เบเปเบฒเบ™เบปเบ” string เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบ•เปเปˆเบ—เป‰เบฒเบเบเบฑเบšเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ›เบฐเบเบญเบšเบกเบต
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบžเบทเปˆเบญเปƒเบซเป‰ compiler เบฎเบนเป‰เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒ .h เป„เบŸเบฅเปŒ. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เป„เบ”เป‰
เบ•เบปเบงเปเบ› 'LIBDIRPREFIX' เบฅเบฐเบšเบธเบชเบฐเบ•เบฃเบดเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบˆเบฐเบ•เปเปˆเบ—เป‰เบฒเบเบเบฑเบšเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡
เปเบ•เปˆเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบœเบนเป‰เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ„เบงเบ™เบ„เบปเป‰เบ™เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”.

เบ•เบปเบงเปเบ›เบญเบทเปˆเบ™, `ENV', เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบžเบฒเบโ€‹เบ™เบญเบโ€‹. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ”เบฝเบงเบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เปเบกเปˆเบ™ 'PATH',
เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ UNIX. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบทเบšเบžเบฑเบ™เบชเบนเบ‡เบชเบธเบ”, เบ—เปˆเบฒเบ™เบ„เบงเบ™
เบเปเปˆเบˆเบฑเบ”เบงเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ (เบซเบผเบท
เบšเบฒเบ‡เบ—เบตเป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบŠเบธเบ”เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡ Perl `use'). เป„เบ”เป‰
เบ•เบปเบงเปเบ›เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบญเบญเบเบˆเบฒเบเบžเบทเป‰เบ™เบ”เบดเบ™.

Interpolating เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบ•เบปเบงเปเบ›

เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบญเบฒเบ”เบˆเบฐเบ–เบทเบ interpolated เปƒเบ™เปเบซเบผเปˆเบ‡เปเบฅเบฐเบŠเบทเปˆเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
เป‚เบ”เบเบเบฒเบ™เบ™เบณเปœเป‰เบฒเบŠเบทเปˆเบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบ `%'.

$env = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ(
DESTDIR => 'เบฅเบฒเบเบเบฒเบ™',
SRCDIR => 'src',
);
เป‚เบ„เบ‡เบเบฒเบ™ $env '%DESTDIR/hello', '%SRCDIR/hello.c';

เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™ recursive - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป„เบŸเบฅเปŒ เบŠเบทเปˆ(s) เบˆเบฐโ€‹เป€เบ›เบฑเบ™โ€‹เบ„เบทเบ™โ€‹เปƒเบซเบกเปˆ
เบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เบˆเบปเบ™เบเปˆเบงเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ—เบ™เป„เบ”เป‰. เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบšเปเปˆเปเบกเปˆเบ™
เบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบ•เบฃเบดเบ‡ null เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ—เบ™.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบงเบดเบ—เบตเบเบฒเบ™


เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ›เบฐเบเบญเบšเบกเบตเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เป„เบ”เป‰ `เปƒเบซเบกเปˆ' เบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡

เบงเบดเบ—เบตเบเบฒเบ™ 'เปƒเปเปˆ' เปเบกเปˆเบ™เบ•เบปเบงเบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธ Perl. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบญเบตเป‰เบ™เบœเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡
เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง เบญเป‰เบฒเบ‡เบญเบดเบ‡, เปเบ•เปˆ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบชเบฐเบ–เบดเบ•เบด, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบทเปˆ
เบ‚เบญเบ‡ Perl เป„เบ”เป‰ เบŠเบธเบ” เบšเปˆเบญเบ™เบ—เบตเปˆ constructor เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ™เบตเป‰โ€‹:

$env = เบ‚เปเป‰เป€เบชเบเปƒเปเปˆ( );

เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เป„เบ”เป‰เบฎเบฑเบšเบžเบญเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ” 'cons', เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐ
เป„เบ”เป‰เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบกเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™
เบ•เบปเบงเปเบ›เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เปƒเบซเป‰เบŠเบทเปˆ/เบ„เปˆเบฒเบ„เบนเปˆเปƒเบ™เบฅเบฒเบเบเบฒเบ™เปเบ—เบ™เบ—เบตเปˆ. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ
เป€เบžเบทเปˆเบญ override เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เป† (เป€เบŠเบฑเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰ `ENV'), เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡
override เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบซเบเบธเป‰เบ‡โ€‹เบเบฒเบโ€‹เบ™เบตเป‰โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™ 'เบชเปเบฒโ€‹เป€เบ™เบปเบฒโ€‹' เปƒเบ™โ€‹
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง.

เป„เบ”เป‰ `เป‚เบ„เบ™' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'clone' เบชเป‰เบฒเบ‡ clone เบ‚เบญเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
เป€เบญเบตเป‰เบ™เบงเปˆเบฒเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$env2 = $env1->เป‚เบ„เบ™( );

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™ overrides เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ›เบปเบเบเบฐเบ•เบดเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบˆเบฒเบ
เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบทเปˆเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ”เบฝเบงเบเบฑเบ™ (เบŠเบถเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเบปเปˆเบ‡เบญเบญเบเป„เบ›เบเบฑเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง), เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ‡เปˆเบฒเบเบ”เบฒเบ.

เป„เบ”เป‰ `เบชเบณเป€เบ™เบปเบฒ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบชเปเบฒเป€เบ™เบปเบฒ' เบชเบฐเบเบฑเบ”เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบžเบฒเบเบ™เบญเบเบˆเบฒเบ an
เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เปเบฅเบฐโ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เบ„เบนเปˆ / เบกเบนเบ™โ€‹เบ„เปˆเบฒโ€‹. Overrides เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ„เปˆเบฒ overridden เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เบ„เบทเบ™, เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก. เป„เบ”เป‰
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เป€เบ›เบฑเบ™ hash, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบšเบš, เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบญเบทเปˆเบ™เป†โ€‹:

%env = $env1->เบชเบณเป€เบ™เบปเบฒ( );

เบ„เปˆเบฒเบ‚เบญเบ‡ 'ENV', เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เป€เบ›เบฑเบ™ hash, เบเบฑเบ‡เบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเป„เบ›เบ—เบตเปˆ hash เปƒเปเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™.
เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบขเป‰เบฒเบ™เบเบปเบงเบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบ”เบตเบก. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เปเบ—เป‰
เบ•เป‰เบญเบ‡เบเบฒเบ™ override เบžเบฝเบ‡เปเบ•เปˆเบ•เบปเบงเปเบ› 'PATH' เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰
เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

%cons = new cons()->copy();
$cons{ENV}{PATH} = " ";
$cons = new cons(%cons);

เบ™เบตเป‰เบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบšเปเปˆเบฅเบปเบšเบเบงเบ™.

เป„เบ”เป‰ 'เบ•เบดเบ”เบ•เบฑเป‰เบ‡' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบ•เบดเบ”เบ•เบฑเป‰เบ‡' เบˆเบฑเบ”เปเบˆเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบซเบกเบฒเบฐเบชเบปเบก: เป„เบŸเบฅเปŒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ„เบฑเบ”เบฅเบญเบเบ–เป‰เบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบ”เป‰. เบ–เป‰เบฒ
เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡
เป„เบŸเบฅเปŒ. เบกเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ:

เบ•เบดเบ”เบ•เบฑเป‰เบ‡ $env , ;

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบญเบฒเบ”เบˆเบฐเบ•เบฑเป‰เบ‡เบŠเบทเปˆ arbitrarily, เบžเบฝเบ‡เปเบ•เปˆเบชเบธเบ”เบ—เป‰เบฒเบ
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบŠเบทเปˆเปเบกเปˆเบ™เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบŠเบทเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™
เบˆเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹ foo/bar in เบ–เบฒเบ™, เบ™เบตเป‰เบˆเบฐเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™ เบžเบฒเบ—เบฐเบ™เบฒเบเบ„เบงเบฒเบก เป„เบŸเบฅเปŒเปƒเบ™ เบ–เบฒเบ™ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต (เบšเปเปˆ
foo/bar).

เป„เบ”เป‰ 'เบ•เบดเบ”เบ•เบฑเป‰เบ‡' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'InstallAs' เบˆเบฑเบ”เบซเบฒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰ เป€เบญเบเบฐเบชเบฒเบ™(sโ€‹) เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เป€เบ›เบฑเบ™โ€‹
เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เป„เบงเป‰โ€‹ เป€เบญเบเบฐเบชเบฒเบ™(เบช). เบซเบผเบฒเบเป†เป„เบŸเบฅเปŒเบ„เบงเบ™เบ–เบทเบเบฅเบฐเบšเบธเป€เบ›เบฑเบ™เบฅเบฒเบเบเบฒเบ™เป„เบŸเบฅเปŒ. เป„เบ”เป‰
เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบกเปˆเบ™โ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹: เป„เบŸเบฅโ€‹เปŒโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ„เบฑเบ”โ€‹เบฅเบญเบโ€‹เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เป„เบ”เป‰โ€‹. เบ–เป‰เบฒเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™
เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบŸเบฅเปŒ. เบกเบฑเบ™โ€‹เปเบกเปˆเบ™
เป€เบญเบตเป‰เบ™เบ”เบฑเปˆเบ‡เบ™เบตเป‰:

'เบ•เบดเบ”เบ•เบฑเป‰เบ‡' เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบชเบญเบ‡เบงเบดเบ—เบต:

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบŸเบฅเปŒเบ”เบฝเบง:

เบ•เบดเบ”เบ•เบฑเป‰เบ‡As $env TgtFile, SrcFile;

เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบซเบผเบฒเบโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹:

InstallAs $env ['tgt1', 'tgt2'], ['src1', 'src2'];

เบซเบผเบท, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ:

@srcs = qw(src1 src2 src3);
@tgts = qw(tgt1 tgt2 tgt3);
เบ•เบดเบ”เบ•เบฑเป‰เบ‡As $env [@tgts], [@srcs];

เบ—เบฑเบ‡เป€เบ›เบปเป‰เบฒเปเบฒเบ เปเบฅเบฐเบฅเบฒเบเบเบฒเบ™เปเบซเบผเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เบ„เบงเบ™เบกเบตเบ„เบงเบฒเบกเบเบฒเบงเบ”เบฝเบงเบเบฑเบ™.

เป„เบ”เป‰ 'เบกเบตเบ„เปˆเบฒ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบกเบตเบ„เปˆเบฒ' เบ‚เป cons เบšเปเปˆเปƒเบซเป‰เบฅเบถเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบซเบผเบทเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเปˆเบญเบ™
เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เป€เบญเบตเป‰เบ™โ€‹เป€เบ›เบฑเบ™โ€‹:

เบกเบตเบ„เปˆเบฒ ;

เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ•เปเปˆเบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” เบซเบผเบทเบ”เบตเบšเบฑเบ
เป„เบŸเบฅเปŒเบ‚เปเป‰เบกเบนเบ™เบ‚เปˆเบฒเบงเบชเบฒเบ™เบ—เบตเปˆเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡. เบ‚เปเป‰เป€เบชเบเบเบฑเบ‡เบˆเบฐเบขเบนเปˆ
เบฅเบถเบšเป„เบŸเบฅเปŒเป€เบกเบทเปˆเบญเบ—เบธเบ‡ `-r' เบ–เบทเบเบฅเบฐเบšเบธ.

เป„เบ”เป‰ 'เบ„เปเบฒเบชเบฑเปˆเบ‡' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบ„เปเบฒเบชเบฑเปˆเบ‡' เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™ catchall เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เปเบˆเบ‡เบžเบฒเบเบ™เบญเบ
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ. เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰, เป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบฅเบฐเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡
เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เบซเบผเบทเบชเบฒเบ, เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบ›เบฑเบ™
string (string เบ™เบตเป‰โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบซเบผเบฒเบโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบเบฑเบ‡โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบกเบฑเบ™โ€‹, เปเบเบโ€‹เป‚เบ”เบโ€‹เปƒเบซเบกเปˆโ€‹
เบชเบฒเบ). 'เบ„เปเบฒเบชเบฑเปˆเบ‡' เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบ„เปเบฒเบชเบฑเปˆเบ‡ $env , , ;

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰, เปเบฅเบฐเบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เบ•เป‰เบญเบ‡
เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบซเบผเบท Cons เบˆเบฐโ€‹เบšเปเปˆโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ.

เบžเบฒเบเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบˆเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เปเบ™เบฐเบ™เบณเป‚เบ”เบเบเบฒเบ™เบ™เบณเปœเป‰เบฒเบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบ `%'. เบ™เบตเป‰เปเบกเปˆเบ™ recursive:
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เบˆเบปเบ™เบเปˆเบงเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ—เบ™เบซเบผเบฒเบ. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹
เบ•เบปเบงเปเบ›เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบ•เบฃเบดเบ‡ null เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ—เบ™. เบ
เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ `%%' เบˆเบฐเบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ `%' เบ”เบฝเบงเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเปเปˆเบชเป‰เบฒเบ‡.

เบกเบตเบซเบผเบฒเบเบ•เบปเบงเปเบ› pseudo เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ:

%> เบŠเบทเปˆเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ (เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบซเบผเบฒเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เปเบฒเบญเบดเบ”เบชเบฐเป€เบซเบกเบต
เบเปˆเบฒเบง).

%0 เบ„เบทเบเบฑเบ™เบเบฑเบš `%>'.

%1, %2, ..., %9
เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบซเบกเบฒเบเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เปเบฒเบญเบดเบ”เบœเปˆเบฒเบ™เป€เบเบปเป‰เบฒ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš.

%< เบŠเบธเบ”เป€เบ•เบฑเบกเบ‚เบญเบ‡เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™. เบ–เป‰เบฒเบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบ™เบณเปƒเบŠเป‰เบขเบนเปˆเบšเปˆเบญเบ™เบญเบทเปˆเบ™เปƒเบ™
เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™ (เบœเปˆเบฒเบ™ `%1', `%2', เปเบฅเบฐเบญเบทเปˆเบ™เป†), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเบˆเบฒเบ
เบฅเบฒเบเบเบฒเบ™เบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ `%<'. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบžเบปเบšเปƒเบ™ a เบ—เบฐเบšเบฝเบ™ เป€เบญเบเบฐเบชเบฒเบ™
เปƒเบ™ เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต:

เบ„เปเบฒเบชเบฑเปˆเบ‡ $env 'tgt', qw(foo bar baz), qq(
echo %< -i %1 > %>
echo %< -i %2 >> %>
echo %< -i %3 >> %>
);

If tgt เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡
เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เปเบฒเบชเบฑเปˆเบ‡, เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™ remapping เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต:

echo test/bar test/baz -i test/foo > test/tgt
echo test/foo test/baz -i test/bar >> test/tgt
echo test/foo test/bar -i test/baz >> test/tgt

เปƒเบ”เป†เบ‚เบญเบ‡เบ•เบปเบงเปเบ› pseudo เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ—เบฑเบ™เบ—เบตเป‚เบ”เบเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰
เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบเป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบ:

:a เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เป„เบ›เบซเบฒเบŠเบทเปˆเป„เบŸเบฅเปŒ
:b เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบšเบงเบเบเบฑเบšเบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบ–เบญเบ”เบญเบญเบเบ‚เบญเบ‡เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบเปƒเบ”เป†
:d เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต
:f เบŠเบทเปˆเป„เบŸเบฅเปŒ
:s เบŠเบทเปˆเป„เบŸเบฅเปŒเบ•เปเปˆเบ—เป‰เบฒเบ
:F เบŠเบทเปˆเป„เบŸเบฅเปŒเบ–เบทเบเบ–เบญเบ”เบญเบญเบเบ‚เบญเบ‡เบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡

เบชเบทเบšเบ•เปเปˆเบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, `%<:f' เบˆเบฐเบ‚เบฐเบซเบเบฒเบเป€เบ›เบฑเบ™ `foo bar baz', เปเบฅเบฐ `%':d> เบˆเบฐ
เบ‚เบฐเบซเบเบฒเบเป„เบ›เบซเบฒ 'เบ—เบปเบ”เบชเบญเบš'.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบ„เบทเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเป‚เบ”เบเบเบฒเบ™เบ›เบดเบ”เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบกเบฑเบ™
เบฅเบฐเบซเบงเปˆเบฒเบ‡ `%[' เปเบฅเบฐ `%]'. เบ™เบตเป‰เบˆเบฐเป‚เบ—เบซเบฒเบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบŠเบทเปˆเป€เบ›เบฑเบ™เบ„เปเบฒเบ—เปเบฒเบญเบดเบ”
enclosed เปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเป€เบ›เบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบฅเบฐเบซเบฑเบ” Perl; เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰
เป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบงเบปเบ‡เป€เบฅเบฑเบšเปƒเบ™เปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰
เป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบกเบตเบŠเบทเปˆ tgt.in:

@keywords = qw(foo bar baz);
$env = new cons(X_COMMA => sub { join(",", @_) });
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env 'tgt', 'tgt.in', qq(
echo '# เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™: %[X_COMMA @keywords %]' > %>
cat %< >> %>
);

เบ™เบตเป‰เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™:

echo '# เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™: foo,bar,baz'> tgt
cat tgt.in >> tgt

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹, เบŠเปˆเบญเบโ€‹เปเบ™เปˆโ€‹เบ‚เบญเบ‡โ€‹เบŠเปˆเบญเบ‡โ€‹เบ‚เบฒเบงโ€‹เปเบกเปˆเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบŠเปˆเบญเบ‡โ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบ”เบฝเบงโ€‹, เปเบฅเบฐโ€‹
เบžเบทเป‰เบ™เบ—เบตเปˆเบชเบตเบ‚เบฒเบงเบŠเบฑเป‰เบ™เบ™เปเบฒเปเบฅเบฐเบ—เบฒเบ‡เบซเบฅเบฑเบ‡เบ–เบทเบเบฅเบปเบšเบฅเป‰เบฒเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบ™เบฐเบ™เปเบฒเป„เบ”เป‰
เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เบชเบตเบ‚เบฒเบงเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบฒเบงเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เปƒเบŠเป‰เบšเบฒเบ‡เบญเบฑเบ™
เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ‚เบญเบ‡เบงเบปเบ‡เบขเบทเบก shell.

เบ–เป‰เบฒเบชเบฐเบ•เบฃเบดเบ‡เบ„เบณเบชเบฑเปˆเบ‡เบซเบผเบฒเบเปเบ–เบงเบ–เบทเบเบชเบฐเปœเบญเบ‡เปƒเบซเป‰, เบ„เบณเบชเบฑเปˆเบ‡เบˆเบฐเบ–เบทเบเบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบฒเบกเบฅเบณเบ”เบฑเบš. เบ–เป‰เบฒโ€‹เบกเบต
เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบฅเบปเป‰เบกเป€เบซเบฅเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบซเบกเบฒเบเป€เบ›เบฑเบ™
เบ›เบฑเบšเบ›เบธเบ‡, ie เบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบซเบกเปˆเบšเปเปˆเป„เบ”เป‰เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบ–เป‰เบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบชเบฐเบ–เบฒเบ™เบฐเบชเบนเบ™ (เบซเบผเบทเป€เบงเบ—เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก,
เบ•เบปเบงเบŠเบตเป‰เบšเบญเบเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบซเบกเปˆเบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบชเปเบฒเบฅเบฑเบš
เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ. เบ–เป‰เบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบœเบดเบ”เบžเบฒเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Cons เบˆเบฐ
เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบ—เบฑเบ™เบชเบฐเป„เบซเบก.

เบ„เปเบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบชเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ, เบ–เบทเบงเปˆเบฒเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰
เบ„เปเบฒเบชเบฑเปˆเบ‡เบŠเบญเบเบซเบฒเบขเบนเปˆเปƒเบ™เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก 'PATH' (เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบเปเบฒเบ™เบปเบ”เป‚เบ”เบ
'ENV' เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡). เบ–เป‰เบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบˆเบฐ
เบ‚เบถเป‰เบ™เบเบฑเบšเบกเบฑเบ™: เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบ•เบฒเบกเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™. เบกเบฑเบ™
เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบซเบผเบฒเบเบชเปˆเบงเบ™เบเบฑเบšเบšเบฒเบ‡ shells, เปเบเบเป‚เบ”เบเป€เบ„เบดเปˆเบ‡เบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”. เบžเบฝเบ‡เปเบ•เปˆ
เบ„เปเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบš, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เบชเบฒเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, เป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡ (เบ”เป‰เบงเบเบงเบดเบ—เบต 'เบ‚เบถเป‰เบ™เบเบฑเบš'), เบซเบผเบท
เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเป€เบ›เบฑเบ™
เบกเบตเปƒเบซเป‰. เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เปเบ™เปˆเบ™เบญเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

เบ–เป‰เบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เป† (เปเบกเป‰เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบซเบผเบฒเบเปเบ–เบง) เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ `[perl]', เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ
เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบ›เบฐเป€เบกเบตเบ™เป‚เบ”เบ Perl เปเบฅเปˆเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ–เบทเบ forked เป‚เบ”เบ
เปเบเบฐ. เบ–เป‰เบฒเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ Perl เบซเบผเบทเบ–เป‰เบฒเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™ Perl เบเบฑเบšเบ„เบทเบ™ 0 เบซเบผเบท
undef, เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ 'foo' เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ Perl:

$env = new cons();
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env 'foo',
qq([perl] open(FOO,'>foo');เบžเบดเบก FOO "hi\n"; close(FOO); 1);

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเป€เบกเบทเปˆเบญเบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบ—เปˆเบฒเบ™เบขเบนเปˆเปƒเบ™เบŠเบธเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป€เบงเบฅเบฒเบ—เบตเปˆ เบเปเปˆเบชเป‰เบฒเบ‡
or เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเป„เบ”เป‰เบ–เบทเบเบญเปˆเบฒเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ Perl เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™
เบเปเปˆเบชเป‰เบฒเบ‡ or เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒเบ—เบตเปˆ 'เบ„เปเบฒเบชเบฑเปˆเบ‡' เบ›เบฒเบเบปเบ”:

$env = new cons();
sub create_file {
$file เบ‚เบญเบ‡เบ‚เป‰เบญเบ = shift;
เป€เบ›เบตเบ”(FILE, ">$file");
เบžเบดเบก FILE "hi\n";
เบ›เบดเบ”(FILE);
return 1
}
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env 'foo', "[perl] &create_file('%>')";

เบชเบฐเบ•เบฃเบดเบ‡ Perl เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™
เบ›เปˆเบฝเบ™เบชเบฐเบ•เบฃเบดเบ‡, เป„เบŸเบฅเปŒเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ. เป€เบ™เบทเป‰เบญโ€‹เปƒเบ™โ€‹เบ‚เบญเบ‡ subroutines เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เป‚เบ—โ€‹เบซเบฒโ€‹,
เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡ subroutine เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ
`create_file' เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบˆเบฐ เบšเปเปˆ เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเป‰เบฒเบ‡โ€‹เปƒเบซเบกเปˆโ€‹. เบœเบนเป‰เปƒเบŠเป‰ Caveat.

Cons เบ›เบปเบเบเบฐเบ•เบดเบžเบดเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™. เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰เบ–เบทเบเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ
เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบกเปˆเบ™ `@'. เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบเบ `@' เบˆเบฒเบ
เบŠเบทเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบซเบผเบทเบซเบ™เบตเบกเบฑเบ™เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ `@cmd' เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ array เบเบฑเบš Perl quote
เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ” interpolation:

# เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡,
# เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ "@cp" เบ„เป‰เบฒเบเบ„เบท array
# เป„เบ›เบซเบฒ Perl qq // เบŸเบฑเบ‡เบŠเบฑเบ™.
# เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ—เบตเบชเบญเบ‡เปเบ—เบ™.
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env 'foo', 'foo.in', qq(
@cp %< tempfile
@ cp tempfile %>
);

เบ–เป‰เบฒเบกเบตเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เป€เบกเบ•เบฒเบ‚เบญเบ‡เปเบเบฐเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบเปเป„เบ”เป‰เปƒเบ™เปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบ, เป€เบŠเบฑเปˆเบ™: `<',
`>', quotes, เบซเบผเบท semi-colon, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เป€เบญเบตเป‰เบ™ a
เปเบเบฐ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™:

cd foo

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ„เบปเบ™เบ”เบฝเบงเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ 'cd' เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เปเบ•เปˆเบ„เปเบฒเบชเบฑเปˆเบ‡
เบŠเปˆเบญเบเปเบ™เปˆ:

cd $<:d; tar cf $>:f $<:f

เป€เบกเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบญเบญเบเบˆเบฐเบเบฑเบ‡เบšเบฑเบ™เบˆเบธ Shell meta character semi-colon, เปเบฅเบฐ shell เบˆเบฐเป€เบ›เบฑเบ™
เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบ•เบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบกเบฒเบโ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ 'cd' เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเป‚เบ”เบ sub-shell เบ™เบตเป‰, เบ„เปเบฒเบชเบฑเปˆเบ‡
เบˆเบฐโ€‹เบ”เบณโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบ„เบฒเบ”โ€‹เป„เบงเป‰.

เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบซเบผเบฒเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡
เป€เบ›เบปเป‰เบฒเปเบฒเบ. เปƒเบ™ Perl, เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบฅเบฒเบเบŠเบทเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ›เบดเบ”เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบชเบตเปˆเบซเบผเปˆเบฝเบก.
เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบ„เปเบฒเบชเบฑเปˆเบ‡ $env ['foo.h', 'foo.c'], 'foo.template', q(
gen %1
);

เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡ 'gen' เบชเป‰เบฒเบ‡เบชเบญเบ‡เป„เบŸเบฅเปŒ, เบ—เบฑเบ‡เบชเบญเบ‡ foo.h เปเบฅเบฐ foo.c.

เป„เบ”เป‰ 'เบงเบฑเบ”เบ–เบธ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'objects' เบˆเบฑเบ”เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเบปเบ‡เบเบฑเบšเบ—เบตเปˆเบฅเบฐเบšเบธ
เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เบ‚เป‰เบฒเบ‡โ€‹เบฅเบธเปˆเบกโ€‹เบ™เบตเป‰โ€‹:

@files = เบงเบฑเบ”เบ–เบธ $env ;

เบžเบฒเบเปƒเบ•เป‰ Unix, เปเบซเบผเปˆเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ .s เปเบฅเบฐ .c เบ›เบฐเบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบฅเบฐเบˆเบฐเบ–เบทเบเบฅเบงเบšเบฅเบงเบก
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ .o. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เป€เบญเบตเป‰เบ™
เบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ 'CCCOM', เบเบฑเบš
`%<' เปเบฅเบฐ `%>' เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡ เปเบฅเบฐเบงเบฑเบ”เบ–เบธ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš (เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ 'เบ„เปเบฒเบชเบฑเปˆเบ‡'
เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ). เบ•เบปเบงเปเบ› 'CPPPATH' เบเบฑเบ‡เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบชเบฐเปเบเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡
เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเปเบเบเบญเบญเบเบˆเบฒเบเบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”, เปเบฅเบฐเบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡
เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ `_IFLAGS,' เป€เบŠเบดเปˆเบ‡เบˆเบฐเบกเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ‚เบญเบ‡ -`I'
เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ—เบธเบเบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™ 'CPPPATH' เปเบกเปˆเบ™เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบžเบตเปˆเบ™เป‰เบญเบ‡เบเบฑเบ™
เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™ (เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡
เปเบฅเบฐโ€‹เบŠเบทเปˆโ€‹เบžเบตเปˆโ€‹เบ™เป‰เบญเบ‡โ€‹เป€เบ—เบดเบ‡โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰). เบ•เบปเบงเปเบ›เบ™เบตเป‰เบ–เบทเบเปƒเบŠเป‰เป‚เบ”เบ 'CCCOM'. เบžเบถเบ”เบ•เบดเบเบณ
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ”เบฑเบ”เปเบเป‰เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ—เบตเปˆ interpolated
เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ `CCCOM', เป€เบŠเบฑเปˆเบ™: `CC', `CFLAGS', เปเบฅเบฐ, เบ—เบฒเบ‡เบญเป‰เบญเบก, `CPPPATH'. เบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰
เปเบ—เบ™เบ„เปˆเบฒเบ‚เบญเบ‡ 'CCCOM', เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เป„เบŸเบฅเปŒเบ™เบตเป‰เบชเบปเปˆเบ‡เบ„เบทเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡
เบŠเบทเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ.

เป„เบ”เป‰ `เป‚เบ„เบ‡เบเบฒเบ™' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เป‚เบ„เบ‡เบเบฒเบ™' เบˆเบฑเบ”เบฅเบฝเบ‡เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบฅเบฐเบšเบธ
เป„เบŸเบฅเปŒ. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เป‚เบ„เบ‡เบเบฒเบ™ $env , ;

เบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™เบˆเบฐเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ 'SUFEXE' เบ•เปเปˆเบ—เป‰เบฒเบ (เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, `.exe' เปƒเบ™เบฅเบฐเบšเบปเบš Win32, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš Unix) เบ–เป‰เบฒเบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบเบšเปเปˆเปเบกเปˆเบ™เปเบฅเป‰เบง.
เบ›เบฐเบˆเบธเบšเบฑเบ™.

เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเปเบ—เบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ -- เบงเบดเบ—เบตเบเบฒเบ™ 'เบงเบฑเบ”เบ–เบธ' เบˆเบฐเป€เบ›เบฑเบ™
invoked เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เปเบˆเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹, เปเบฅเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบต 'เบงเบฑเบ”เบ–เบธ', เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบเบฑเบ‡เปƒเบŠเป‰เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบฒเบเบ™เบญเบเป€เบŠเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡ `LINKCOMโ€‹, เบเบฑเบš `%<โ€‹' เบ•เบฑเป‰เบ‡โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เป€เบ›เบฑเบ™โ€‹
เบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ (เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต), เปเบฅเบฐ `%>' เบเปเบฒเบ™เบปเบ”เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ (เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ 'เบ„เปเบฒเบชเบฑเปˆเบ‡'
เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ). เบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เบˆเบฐเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เบฅเบงเบกเบ—เบฑเบ‡ `LINK', เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡, `LIBPATH', a
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบตเปˆเปเบเบเบญเบญเบเบˆเบฒเบเบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบฐเป€เบžเบฒเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ‚เบญเบ‡
เบฎเบนเบšเปเบšเบš - เบฅเบตเบš, เปเบฅเบฐ `LIBS', เบฅเบฐเบšเบธเบฅเบฒเบเบŠเบทเปˆเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ (เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡ - เบฅเบตเบš
เปเบšเบšเบŸเบญเบกเบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡. เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™เบ—เบฑเบ‡ 'LIBPATH' เปเบฅเบฐ 'LIBS' เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเปเบฒเบ
เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™
(เบŠเบทเปˆเบชเบปเบกเบกเบธเบ”เบ•เบดเบ–เบฒเบ™ เปเบฅเบฐเบŠเบทเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบญเบฒเบ”เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เป€เบŠเบฑเปˆเบ™เบเบฑเบ™). Cons เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”
เบเบฒเบ™เบ‚เบทเป‰เบ™เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบ”เป†เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเป„เบงเป‰เปƒเบ™ `LIBS': เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบเปˆเบญเบ™
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ–เบทเบเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เป„เบ”เป‰ เบซเปเบชเบฐเปเบธเบ” เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”' เบˆเบฑเบ”เปเบˆเบ‡เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเบˆเบฒเบเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบฅเบฐเบšเบธ
เป„เบŸเบฅเปŒ. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ” $env , ;

เบŠเบทเปˆเบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบˆเบฐเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ 'SUFLIB' เบ•เปเปˆเบ—เป‰เบฒเบ (เป‚เบ”เบ
เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, `.lib' เปƒเบ™เบฅเบฐเบšเบปเบš Win32, `.a' เปƒเบ™เบฅเบฐเบšเบปเบš Unix) เบ–เป‰เบฒเบ„เบณเบ•เปเปˆเบ—เป‰เบฒเบเบšเปเปˆเปเบกเปˆเบ™เปเบฅเป‰เบง
เบ›เบฐเบˆเบธเบšเบฑเบ™.

เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเปเบ—เบ™เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ -- เบงเบดเบ—เบตเบเบฒเบ™ 'เบงเบฑเบ”เบ–เบธ' เบˆเบฐเป€เบ›เบฑเบ™
invoked เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เปเบˆเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹, เปเบฅเบฐโ€‹เป€เบžเบฒเบฐโ€‹เบชเบฐโ€‹เบ™เบฑเป‰เบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹
เบเบฒเบ™เบชเบฑเบ‡เป€เบเบ”เบเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบต 'เบงเบฑเบ”เบ–เบธ', เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบเบฑเบ‡เปƒเบŠเป‰เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ•เบปเบงเบˆเบดเบ‡เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบžเบฒเบเบ™เบญเบเป€เบŠเบดเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš
เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบ•เบปเบงโ€‹เบ›เปˆเบฝเบ™โ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡ `ARCOMโ€‹, เบเบฑเบš `%<โ€‹' เบ•เบฑเป‰เบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ” (เปƒเบ™
เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ™เปเบฒโ€‹เบชเบฐโ€‹เป€เบซเบ™เบตโ€‹)โ€‹, เปเบฅเบฐ `%โ€‹>โ€‹' เบเบฑเบšโ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™ (เป€เบšเบดเปˆเบ‡โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™ "เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹" เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹
เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ). เบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เบˆเบฐเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเปเบ›เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบˆเบฐ
เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบฅเบงเบกเบกเบต `AR', เป‚เบ›เบฃเปเบเบฃเบกเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบžเบทเปˆเบญเปƒเบŠเป‰,
`ARFLAGS', เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ”เบฑเบ”เปเบ›เบ‡เบ—เบธเบ‡เบ—เบตเปˆเบกเบญเบšเปƒเบซเป‰เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบ `AR',
เปเบฅเบฐ 'RANLIB', เบŠเบทเปˆเบ‚เบญเบ‡เป‚เบ›เบฃเปเบเบฃเบกเบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเป€เบเบฑเบšเบกเป‰เบฝเบ™, เบ–เป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ (เบ–เป‰เบฒเบชเบฐเป€เบžเบฒเบฐ
เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบธเบ”เบ—เป‰เบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ 'ARCOM' เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเบšเปเปˆ
เบญเป‰เบฒเบ‡เบญเบดเบ‡ `RANLIB').

เบงเบดเบ—เบตเบเบฒเบ™ 'เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”' เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบซเบผเบฒเบเบงเบดเบ—เบต
เบ„เบณเบฎเบฝเบเบฎเป‰เบญเบ‡. เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เบˆเบฒเบเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ—เบฑเบ‡เปเบปเบ” (เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบกเบฒเบˆเบฒเบ
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™) เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปเบฅเบฐเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบง. เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹,
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเบ”เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆ
เบชเปˆเบงเบ™เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™ (เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบˆเบฐเบซเบฒเบเป„เบ›!).

เป„เบ”เป‰ `เป‚เบกเบ”เบนเบ™' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เป‚เบกเบ”เบนเบ™' เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™ 'เป‚เบ„เบ‡เบเบฒเบ™' เปเบฅเบฐ 'เบ„เปเบฒเบชเบฑเปˆเบ‡'. เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐ
เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡
เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เป‚เบกเบ”เบนเบ™เบ•เบปเบงเบˆเบดเบ‡. เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เป‚เบกเบ”เบนเบ™ $env , , ;

เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง
เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเป‚เบซเบฅเบ”, เบซเบผเบทเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ.

เป„เบ”เป‰ เบ‚เบถเป‰เบ™เบเบฑเบš เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'Depends' เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเปƒเบ”เบซเบ™เบถเปˆเบ‡. เบกเบฑเบ™โ€‹เปเบกเปˆเบ™
เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบ‚เบถเป‰เบ™เบเบฑเบš $env , ;

เบญเบฑเบ™เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบ›เบฑเบ™เบšเบฒเบ‡เป‚เบญเบเบฒเบ”, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เบขเบนเปˆ (เบซเบผเบท
เบ‚เบฝเบ™เป„เบ”เป‰) เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป„เบŸเบฅเปŒ. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบกเปˆเบ™เบ„เบดเบ”เป„เบฅเปˆ
เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบˆเบฒเบเบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบงเบดเบ—เบตเบเบฒเบ™
invocation เบซเบผเบทเป‚เบ”เบเบเบฒเบ™เบชเบฐเปเบเบ™เป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡.

เบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเบญเป‰เบฒเบ‡เบญเบดเบ‡เบ—เบตเปˆเบ„เบทเบเบฑเบ™เบชเบณเบฅเบฑเบšเบซเบผเบฒเบเป€เบ›เบปเป‰เบฒเปเบฒเบเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡
เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบŠเบทเปˆโ€‹เบ‚เบญเบ‡โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹. เปƒเบ™ Perl, เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบฅเบฒเบเบŠเบทเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ›เบดเบ”เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบ›เบฑเบ™เบชเบตเปˆเบซเบผเปˆเบฝเบกเบกเบปเบ™
เบงเบปเบ‡เป€เบฅเบฑเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบ‚เบถเป‰เบ™เบเบฑเบš $env ['foo', 'bar'], 'input_file_1', 'input_file_2';

เบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบ—เบฑเบ‡เบชเบญเบ‡ เบŸเบน เปเบฅเบฐ เบžเบฒเบ—เบฐเบ™เบฒเบเบ„เบงเบฒเบก เป„เบŸเบฅเปŒเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบฅเบฒเบเบŠเบทเปˆ.

เป„เบ”เป‰ 'เบšเปเปˆเบชเบปเบ™เปƒเบˆ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบšเปเปˆเบชเบปเบ™เปƒเบˆ' เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบ—เบตเปˆ Cons infers เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.
เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบšเปเปˆเบชเบปเบ™เปƒเบˆ ;

เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™ recompilation เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป„เบŸเบฅเปŒ header เบฅเบฐเบšเบปเบšเบซเบผเบท
เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบฎเบนเป‰เบงเปˆเบฒเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ›เบฃเปเบเบฃเบกเบ–เบทเบเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบ•เบดเบ”เบขเบนเปˆเบเบฑเบš NFS เปƒเบ™เบซเบผเบฒเบเบฅเบฐเบšเบปเบšเบ—เบตเปˆ
เบกเบตเบชเปเบฒเป€เบ™เบปเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ stdio.h, เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”
เป„เบ”เป‰เบกเบฒเบˆเบฒเบเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฒเบเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆ `#include '. เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”
เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบšเบปเบš. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ™เบตเป‰โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบžเบถเบ”โ€‹เบ•เบดโ€‹เบเปเบฒโ€‹เบ—เบตเปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹,
เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹, เป€เบชเบฑเป‰เบ™โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เป€เบญเบปเบฒโ€‹เบเบฒเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹ stdio.h file:

เบšเปเปˆเบชเบปเบ™เปƒเบˆ '^/usr/include/stdio\.h$';

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ 'เบšเปเปˆเบชเบปเบ™เปƒเบˆ' เปเบกเปˆเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด, เบžเบดเป€เบชเบ”
เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบซเบฅเบปเบšเบซเบ™เบตเปเบฅเบฐเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฐเบกเปเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบทเบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡
เบชเบฐเปเบ”เบ‡เบญเบญเบเบ”เป‰เบงเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ `^' เบซเบผเบท `$'.

เป„เบ”เป‰ เป€เบเบทเบญ เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เป€เบเบทเบญ' เบˆเบฐเป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบ—เบตเปˆเป„เบ”เป‰เบกเบฒ
เป„เบŸเบฅเปŒ. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เป€เบเบทเบญ $string;

เบเบฒเบ™เบ›เปˆเบฝเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เป€เบเบทเบญเบˆเบฐเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ—เบธเบเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™
เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡,

เป€เบเบทเบญ `uname -s`;

เบˆเบฐเบšเบฑเบ‡เบ„เบฑเบšเปƒเบซเป‰เบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ—เบธเบเป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”
เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” (เบ•เบฒเบกเบเบฒเบ™เบฅเบฒเบเบ‡เบฒเบ™เป‚เบ”เบ `uname -s') เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เป„เบ”เป‰ 'เปƒเบŠเป‰เปเบ„เบ”' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'UseCache' เปเบ™เบฐเบ™เปเบฒ Cons เป€เบžเบทเปˆเบญเบฎเบฑเบเบชเบฒ cache เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเป„เบ”เป‰เบกเบฒ, เป€เบžเบทเปˆเบญเปเบšเปˆเบ‡เบ›เบฑเบ™.
เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™.

UseCache("cache/ ") โŽชโŽช เป€เบ•เบทเบญเบ™("เบšเปเปˆเบžเบปเบš cache directory");

เป„เบ”เป‰ 'เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบซเบผเปˆเบ‡' เบงเบดเบ—เบตเบเบฒเบ™

เบ„เบฐเบ™เบดเบ”เบชเบฒเบ” 'SourcePath' เบ•เบญเบšเบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบซเบผเปˆเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒ, เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบš
เบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบžเบฒเบเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเป‰เบฒเบ‡. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

$path = SourcePath ;

เป„เบ”เป‰ เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ ConsPath เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'ConsPath' เบเบฑเบšเบ„เบทเบ™เบกเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ–เป‰เบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฒเบˆเบฒเบ, เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™
undef (false) เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

$result = ConsPath ;

เป„เบ”เป‰ `เบ—เบฒเบ‡เปเบเบ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'SplitPath' เบŠเบญเบเบซเบฒเบŠเบทเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบซเบผเบฒเบเบญเบฑเบ™เปƒเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเปเบเบเบญเบญเบเป€เบ›เบฑเบ™เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™
เบ•เบปเบงเปเบเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ (':' เปƒเบ™เบฅเบฐเบšเบปเบš UNIX, ';' เปƒเบ™ Windows NT), เปเบฅเบฐ
เบชเบปเปˆเบ‡เบ„เบทเบ™เบŠเบทเปˆเบ—เบตเปˆเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ„เบปเบšเบ–เป‰เบงเบ™. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

@paths = SplitPath ;

เบงเบดเบ—เบตเบเบฒเบ™ 'SplitPath' เบˆเบฐเบ›เปˆเบฝเบ™เบŠเบทเปˆเบ—เบตเปˆเบ™เบณเปœเป‰เบฒ '#' เป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเป€เปเบฒเบฐเบชเบปเบก.
name (เบšเปเปˆเบกเบต '#') เปเบฅเบฐเบˆเบฐเบ›เปˆเบฝเบ™เบŠเบทเปˆเบžเบตเปˆเบ™เป‰เบญเบ‡เป€เบ›เบฑเบ™เบŠเบทเปˆเบฅเบฐเบ”เบฑเบšเป€เบ—เบดเบ‡.

เป„เบ”เป‰ "DirPath" เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'DirPath' เบเบฑเบšเบ„เบทเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบŠเบทเปˆ(s) เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบซเบผเบทเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต.
เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

$cwd = DirPath ;

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ 'DirPath' เปเบกเปˆเบ™:

$cwd = DirPath '.';

เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบเปˆเบญเบ เบ—เบฐเบšเบฝเบ™ เบเบทเปˆเบ™.

เป„เบ”เป‰ `เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบŸเบฅเปŒ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'FilePath' เบ•เบญเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบŠเบทเปˆ(s) เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบซเบผเบทเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒ. เบกเบฑเบ™โ€‹เปเบกเปˆเบ™
เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

$file = FilePath ;

เป„เบ”เป‰ `เบŠเปˆเบงเบ' เบงเบดเบ—เบตเบเบฒเบ™

เบงเบดเบ—เบตเบเบฒเบ™ 'เบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ' เบฅเบฐเบšเบธเบ‚เปเป‰เบ„เบงเบฒเบกเบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เป€เบกเบทเปˆเบญเบœเบนเป‰เปƒเบŠเป‰เบฎเบฝเบเบฎเป‰เบญเบ‡ `cons
-เบŠ'. เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ‚เบญเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบฐเป€เบžเบฒเบฐ, เบกเบนเบ™เบ„เปˆเบฒ, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰. เบกเบฑเบ™โ€‹เบ–เบทเบโ€‹เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบŠเปˆเบงเบเป€เบซเบผเบทเบญ ;

เบงเบดเบ—เบตเบเบฒเบ™ 'เบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญ' เบญเบฒเบ”เบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ”เบฝเบง, เปเบฅเบฐเป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ”เป‰เบฒเบ™เป€เบ—เบดเบ‡.
เบฅเบฐเบ”เบฑเบš เบเปเปˆเบชเป‰เบฒเบ‡ เบเบทเปˆเบ™.

เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ cons


เบ‚เป‰เบฒเบก เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เบ•เบปเบงเปเบ›

เบกเบตเบซเบผเบฒเบเบงเบดเบ—เบตเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ Cons, เป€เบŠเบดเปˆเบ‡เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ. เบ‡เปˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹
เบงเบดเบ—เบตเบเบฒเบ™เปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™,
เปเบ•เปˆเบ”เบฑเบ”เปเบเป‰เป€เบžเบทเปˆเบญเบชเบฐเบ—เป‰เบญเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เบ™เบตเป‰เบกเบฑเบเบˆเบฐเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบš C-based
เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ 'เปƒเบซเบกเปˆ' constructor, เปเบฅเบฐ 'clone' เปเบฅเบฐ 'copy' เบงเบดเบ—เบตเบเบฒเบ™
เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ›เบฐเบชเบปเบก. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบกเบตเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบชเบ—เบฑเบ‡เปเบปเบ”เบ•เปเปˆเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™
เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ.

เป€เบžเบตเปˆเบกเบ•เบทเปˆเบก เปƒเบซเบกเปˆ เบงเบดเบ—เบตเบเบฒเบ™

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบงเบดเบ—เบตเบเบฒเบ™เปƒเบซเบกเปˆเปƒเบซเป‰เบเบฑเบš 'เบ‚เปเป‰เป€เบชเบ'.
เบŠเบธเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, 'InstallScript', เป€เบŠเบดเปˆเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ a
tcl script เปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป, เปเบ•เปˆเปเบเป‰เป„เบ‚เบชเบฐเบ„เบดเบšเบ—เปเบฒเบญเบดเบ”เป€เบžเบทเปˆเบญเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบงเบ—เบต-
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบชเบฐเบ„เบฃเบดเบš:

# cons::InstallScript - เบชเป‰เบฒเบ‡เป€เบงเบตเบŠเบฑเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบงเบ—เบตเบ‚เบญเบ‡ shell
# เบชเบฐเบ„เบฃเบดเบšเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบฐเบ•เบฃเบดเบ‡ ``#!your-path-here'' เบ”เป‰เบงเบเป€เบงเบ—เบตเบชเบฐเป€เบžเบฒเบฐ
# เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ $BIN_DIR.

sub cons::InstallScript {
เบ‚เบญเบ‡เบ‚เป‰เบญเบ ($env, $dst, $src) = @_;
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env $dst, $src, qq(
sed s+your-path-here+$BIN_DIR+ %< > %>
chmod oug+x %>
);
}

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบŠเบธเบ” 'cons' (เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเบซเบ™เป‰เบฒเบŠเบทเปˆ
เบเบฑเบš `cons::'). เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เปƒเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เป€เบซเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เปƒเบ™โ€‹เบ—เบปเปˆเบงโ€‹เป‚เบฅเบโ€‹เบเบฑเบšโ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹,
เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เป„เบ”เป‰เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

InstallScript $env "$BIN/foo", "foo.tcl";

เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ•เบปเบงเปเบ› 'BINDIR' เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป€เบ›เบฑเบ™
เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ เบซเบผเบทเป€เบญเบปเบฒเบกเบฒเบˆเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ -- เป€เบ›เบฑเบ™ `%BINDIR'.

เบ‚เป‰เบฒเบก เบงเบดเบ—เบตเบเบฒเบ™

เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบงเบดเบ—เบตเบเบฒเบ™เปƒเบชเปˆเบŠเปˆเบญเบ‡เบŠเบทเปˆ 'เบ‚เปเป‰เป€เบชเบ', เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบŠเบธเบ”เปƒเบซเบกเปˆ
เป€เบŠเบดเปˆเบ‡เบชเบทเบšเบ—เบญเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบˆเบฒเบเบŠเบธเบ” 'cons' เปเบฅเบฐ overrides เบซเบผเบทเป€เบžเบตเปˆเบกเบญเบทเปˆเบ™เป†. เบ™เบตเป‰
เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบเบปเบ™เป„เบเบเบฒเบ™เบชเบทเบšเบ—เบญเบ”เบ‚เบญเบ‡ Perl.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบเปเบฒเบ™เบปเบ”เบŠเบธเบ”เปƒเบซเบกเปˆ 'cons::switch' เป€เบŠเบดเปˆเบ‡ overrides เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™
เบงเบดเบ—เบตเบเบฒเบ™ 'เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”'. เบงเบดเบ—เบตเบเบฒเบ™ overridden เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบกเบ”เบนเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”
เบฎเบงเบšเบฎเบงเบก. เบกเบตเบœเบนเป‰เบเปเปˆเบชเป‰เบฒเบ‡เปƒเปเปˆเปƒเบซเป‰. เบชเบดเปˆเบ‡โ€‹เปเบงเบ”โ€‹เบฅเป‰เบญเบกโ€‹เบ—เบตเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบš constructor เบ™เบตเป‰โ€‹เบˆเบฐโ€‹
เบกเบตเบงเบดเบ—เบตเบเบฒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบซเบกเปˆ; เบ„เบปเบ™เบญเบทเปˆเบ™เบˆเบฐเบšเปเปˆ.

package cons::เบชเบฐเบซเบผเบฑเบš;
BEGIN {@ISA = 'cons'}

เบเปˆเบญเบเปƒเบซเบกเปˆ {
เบ›เปˆเบฝเบ™;
เป€เบ›เบฑเบ™เบžเบญเบ™เปƒเบซเป‰เปเบเปˆ cons เปƒเบซเบกเปˆ(@_);
}

เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบเปˆเบญเบ {
my($env) = shift;
my($lib) = shift;
my(@objs) = เบงเบฑเบ”เบ–เบธ $env @_;
เบ„เปเบฒเบชเบฑเปˆเบ‡ $env $lib, @objs, q(
%LD -r %LDFLAGS %< -o %>
);
}

เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$env = new cons::switch(@overrides);
...
เบซเปเบชเบฐเปเบธเบ” $env 'lib.o', 'foo.c', 'bar.c';

เบเบฒเบ™เบ‚เป cons


เบ„เปเบฒเบชเบฑเปˆเบ‡ 'cons' เบกเบฑเบเบˆเบฐเบ–เบทเบเป€เบญเบตเป‰เบ™เบˆเบฒเบเบฎเบฒเบเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡. เบ เบเปเปˆเบชเป‰เบฒเบ‡ เป€เบญเบเบฐเบชเบฒเบ™
เบ•เป‰เบญเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบฑเป‰เบ™. เบ–เป‰เบฒเบญเบฒเบเบดเบงเป€เบกเบฑเบ™ `-f' เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ เบเปเปˆเบชเป‰เบฒเบ‡
เป„เบŸเบฅโ€‹เปŒโ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ (เปเบฅเบฐโ€‹, เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹, เป€เบ›เบฑเบ™โ€‹เบฎเบฒเบโ€‹เบชเบฐโ€‹เบซเบผเบฑเบšโ€‹, เบ™เบฑเบšโ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบ•เปˆ 'consโ€‹' เบˆเบฐ cd เบเบฑเบš เบเปเปˆเบชเป‰เบฒเบ‡
เป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต).

เบ–เป‰เบฒ 'เบ‚เปเป‰เป€เบชเบ' เบ–เบทเบเป€เบญเบตเป‰เบ™เบˆเบฒเบเบฅเบนเบเบ‚เบญเบ‡เบฎเบฒเบเบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ '-t', เบกเบฑเบ™.
เบˆเบฐเบเปˆเบฒเบ‡เบ‚เบถเป‰เบ™เบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒ a เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ. (เบŠเบทเปˆเบชเบณเบฎเบญเบ‡เบญเบฒเบ”เบˆเบฐ
เบเบฑเบ‡เบ–เบทเบเบฅเบฐเบšเบธเบ”เป‰เบงเบ `-f'.) เป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เปเบ–เบงเบ„เบณเบชเบฑเปˆเบ‡เบˆเบฐเบ–เบทเบเบ”เบฑเบ”เปเบเป‰
เป€เบ›เบฑเบ™เบžเบตเปˆเบ™เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบš เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบต
เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ, เบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

% cd libfoo/subdir
% cons -t เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ

เป€เบ—เบปเปˆเบฒเบเบฑเบš:

% cons libfoo/subdir/target

เบ–เป‰เบฒเบกเบตเป€เบ›เบปเป‰เบฒเปเบฒเบ 'เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™' เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต เบเปเปˆเบชเป‰เบฒเบ‡ or
เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ, เบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบซเบผเบทเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆ 'cons -t'
เป„เบ”เป‰ invoked เบˆเบฐ เป„เบ”เป‰ เบฎเบฑเบš เบเบฒเบ™ เบเปเปˆ เบชเป‰เบฒเบ‡.

เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เปเบกเปˆเบ™โ€‹เป€เบญเบตเป‰เบ™โ€‹เบงเปˆเบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

เบ‚เปเป‰เป€เบชเบ --

เบšเปˆเบญเบ™เบ—เบตเปˆ เบเบฐเบ—เบนเป‰เบ—เบตเปˆ เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบญเบฑเบ™เปƒเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰, เปƒเบ™เบฅเบณเบ”เบฑเบšเปƒเบ”เบ™เบถเปˆเบ‡:

เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ เบชเป‰เบฒเบ‡เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบ–เป‰เบฒ เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบ เป€เบ›เบฑเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡ recursively
เบ—เบธเบเบขเปˆเบฒเบ‡เบžเบฒเบเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบฑเป‰เบ™.

+ เบฎเบนเบšเปเบšเบš เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบžเบดโ€‹เบˆเบฒโ€‹เบฅเบฐโ€‹เบ™เบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ—เบตเปˆโ€‹เบเบปเบ‡โ€‹เบเบฑเบ™โ€‹ เบฎเบนเบšเปเบšเบš, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™
เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบด Perl. เบเบญเบกเบฎเบฑเบšเบญเบฒเบเบดเบงเป€เบกเบฑเบ™ `+' เบซเบผเบฒเบเบญเบฑเบ™.

เบŠเบทเปˆ=
เบŠเบธเบ” เบŠเบทเปˆ เบกเบนเบ™เบ„เปˆเบฒ h เปƒเบ™ hash `ARG' เบœเปˆเบฒเบ™เป„เบ›เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เบเบทเปˆเบ™.

`-cc' เบชเบฐเปเบ”เบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบกเบทเปˆเบญเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ cache. เบšเปเปˆ
เบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบงเปˆเบฒเป„เบŸเบฅเปŒเป„เบ”เป‰เบ–เบทเบเบ”เบถเบ‡เบญเบญเบเบกเบฒเปเบฅเป‰เบง; เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบš
เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡.

`-cd' เบ›เบดเบ”เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”. เบขเปˆเบฒเบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ cache เบซเบผเบท flush เป„เบ› cache.

`-cr' เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเปเบšเบšเบชเบธเปˆเบก. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบซเบผเบฒเบ
เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰ cache.

`-cs' synchronize เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบตเปˆเบžเบปเบšเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบเบฑเบš cache.
เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ–เป‰เบฒเบเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบ -cc เบซเบผเบทเบซเบฒเบเปเป€เบ›เบตเบ”เปƒเบŠเป‰เป€เบกเบทเปˆเบญเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰
เบ”เป‰เบงเบ UseCache.

`-d' เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ”เบตเบšเบฑเบเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช.

`-f'
เปƒเบŠเป‰เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปเบ—เบ™ เบเปเปˆเบชเป‰เบฒเบ‡ (เปเบ•เปˆเบ—เปเบฒเบญเบดเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบšเบฑเบ™เบˆเบธ
เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เบญเบ‡ เป€เบญเบเบฐเบชเบฒเบ™).

`-h' เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบŠเปˆเบงเบเป€เบซเบผเบทเบญเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบ–เป‰เบฒเบญเบฑเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ–เบทเบเบเบณเบ™เบปเบ”, เปเบฅเบฐเบญเบญเบ.

`-k' เบชเบทเบšเบ•เปเปˆเป„เบ›เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

`-o'
เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒ override เป€เบญเบเบฐเบชเบฒเบ™.

`-p' เบชเบฐเปเบ”เบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบฅเบฐเบšเบธ. เบšเปเปˆเบกเบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบเปเปˆเบชเป‰เบฒเบ‡.

`-pa' เบชเบฐเปเบ”เบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡. เบšเปเปˆเบกเบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบเปเปˆเบชเป‰เบฒเบ‡.

`-pw' เบชเบฐเปเบ”เบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐเบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”. เบšเปเปˆเบกเบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบเปเปˆเบชเป‰เบฒเบ‡.

`-q' เบขเปˆเบฒเป€เบงเบปเป‰เบฒเบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ เปเบฅเบฐเบฅเบถเบšเป€เบ›เบปเป‰เบฒเปเบฒเบ.

`-r' เป€เบญเบปเบฒเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบš . เบšเปเปˆเบกเบตเบเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเบเปเปˆเบชเป‰เบฒเบ‡.

`-R'
เบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒเปƒเบ™ เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ. เบซเบผเบฒเบ -R เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ–เบทเบเบ„เบปเป‰เบ™เบซเบฒเบขเบนเปˆเปƒเบ™
เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹.

`-t' เบ‚เป‰เบฒเบกเป„เบ›เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบŠเบฑเป‰เบ™เบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบŠเบญเบเบซเบฒ a เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒ, เบ–เป‰เบฒเบšเปเปˆเบกเบต
เปƒเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ›เบฐโ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹. เป€เบ›เบปเป‰เบฒเปเบฒเบเบˆเบฐเบ–เบทเบเบ”เบฑเบ”เปเบเป‰เปƒเบซเป‰เบชเบปเบกเบ—เบฝเบšเบเบฑเบš
เบเปเปˆเบชเป‰เบฒเบ‡ เบเบทเปˆเบ™.

`-v' เบชเบฐเปเบ”เบ‡เบชเบฐเบšเบฑเบš `cons' เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™.

`-V' เบชเบฐเปเบ”เบ‡ `cons' เบฎเบธเปˆเบ™เปเบฅเบฐเบญเบญเบ.

`-wf'
เบ‚เบฝเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™.

`-x' เบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบญเบฑเบ™เบ™เบตเป‰, เปเบฅเบฐเบญเบญเบ.

เปเบฅเบฐ construct-args เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ‚เปเป‰เป‚เบ•เป‰เปเบเป‰เบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™ เบเปเปˆเบชเป‰เบฒเบ‡ เบเบทเปˆเบ™.
เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ„เบงเบ™เบˆเบฐเบกเบต a -- เปเบเบเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบเบฑเบš cons เปเบฅเบฐเบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™
เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบขเบนเปˆเปƒเบ™ เบเปเปˆเบชเป‰เบฒเบ‡ เบเบทเปˆเบ™.

เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เบญเบ‡ construct-args เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบŠเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบŠเบฑเปˆเบ™ Getopt เบซเบผเบทเบ‚เบญเบ‡เบกเบฑเบ™
variants, เบซเบผเบทเบŠเบธเบ”เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบเปเบฒเบ™เบปเบ”. cons เบˆเบฐเบœเปˆเบฒเบ™เปƒเบ™ construct-args as @ARGV เปเบฅเบฐ
เบˆเบฐเบšเปเปˆเบžเบฐเบเบฒเบเบฒเบกเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบซเบเบฑเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบ --.

% cons -R /usr/local/repository -d os=solaris +driver -- -c test -f DEBUG

เบˆเบฐเบœเปˆเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบเบฑเบš cons

-R /usr/local/repository -d os=solaris +driver

เปเบฅเบฐเบ•เปเปˆเป„เบ›เบ™เบตเป‰, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ” เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเป€เบ›เบฑเบ™ @ARGV

-c เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš -f DEBUG

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ `cons -r .' เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™ recursive เป€เบ•เบฑเบกเบ—เบตเปˆ 'เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบฐเบญเบฒเบ”', เปเบ•เปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบšเปเปˆเบกเบต
เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™ เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅโ€‹เปŒโ€‹เบซเบผเบทโ€‹เปƒเบ”เป†โ€‹ เบ—เบฐเบšเบฝเบ™ เป„เบŸเบฅเปŒ. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ›เบฑเบ™
เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเป„เบŸเบฅเปŒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบซเบผเปˆเบ‡ (เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปเบเบ เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ เปเบฅเบฐ เบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ เบฅเบฒเบเบเบฒเบ™,
เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต).

เบ•เบปเบงเป€เบฅเบทเบญเบ `-p', `-pa', เปเบฅเบฐ `-pw' เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบชเบธเบ”เป€เบžเบทเปˆเบญเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ•เบปเบงเบŠเปˆเบงเบเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™.
scripts เบซเบผเบท debugging เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบงเปˆเบฒ script เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบ™เบงเปƒเบ” เบชเบปเปˆเบ‡เบญเบญเบ/include/foo.h,
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบฝเบ‡เปเบ•เปˆเบžเบดเบก:

% cons -pw export/include/foo.h

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เปเบฅเบฐ เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™ เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เป€เบ™เบต


QuickScan เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เบชเบฐโ€‹เปเบเบ™โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เป€เบญโ€‹เบเบฐโ€‹เบฅเบฒเบ”โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบกเบฒโ€‹. เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™ QuickScan เบญเบฑเบ™เปœเบถเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เปƒเบ”เบเปเป„เบ”เป‰ เปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเปƒเบซเป‰เบกเบฒ.

QuickScan เบ–เบทเบเป€เบญเบตเป‰เบ™เบ”เบฑเปˆเบ‡เบ™เบตเป‰:

QuickScan CONSENV CODEREF, FILENAME [, PATH]

เบเบณเบ™เบปเบ”เบเบฒเบ™เบเปˆเบญเบเบ—เบตเปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เป‚เบ”เบ CODEREF เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบŠเบทเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบฎเบงเบกเบขเบนเปˆเบ™เบณ
เป‚เบ”เบเบเบปเบ‡เป‚เบ”เบ FILE. เบŠเบทเปˆเป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบชเบฐเปเบเบ™. เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ PATH เบ—เบฒเบ‡เป€เบฅเบทเบญเบ
เบชเบฐเปœเบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒเป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒ FILENAME เปเบฅเบฐ/เบซเบผเบทเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰เบชเบฐเปœเบญเบ‡เปƒเบซเป‰
เบ›เบฐเบˆเบณเบเปˆเบญเบ. PATH เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡ array เบ‚เบญเบ‡เบŠเบทเปˆ directory เบŠเบญเบเบซเบฒ, เบซเบผเบท a
เบชเบฐเบ•เบฃเบดเบ‡เบ‚เบญเบ‡เบŠเบทเปˆเบ—เบตเปˆเปเบเบเบ”เป‰เบงเบเบ•เบปเบงเปเบเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš (':' เปƒเบ™เบฅเบฐเบšเบปเบš UNIX, ';' เบชเบธเบ”
Windows NT).

เบเบณเบ™เบปเบ”เบเบฒเบ™เบเปˆเบญเบเบ–เบทเบเป€เบญเบตเป‰เบ™เป€เบ—เบทเปˆเบญเบ”เบฝเบงเบชเบณเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเปเบ–เบงเปƒเบ™เป„เบŸเบฅเปŒ, เบ”เป‰เบงเบ $_ เบ•เบฑเป‰เบ‡เป€เบ›เบฑเบ™เปเบ–เบงเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.
เบ–เป‰เบฒ subroutine เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบชเบฑเป‰เบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบซเบผเบท, เบชเปเบฒเบฅเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบฑเป‰เบ™, เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”,
เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบญเปˆเบฒเบ™เบžเบงเบเบกเบฑเบ™เป€เบญเบ‡, เบˆเบฒเบ filehandle SCAN. เบกเบฑเบ™เบเบฑเบ‡เบญเบฒเบ”เบˆเบฐเบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™ loop, เบ–เป‰เบฒ
เบกเบฑเบ™เบฎเบนเป‰เบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบ•เบทเปˆเบกเบญเบตเบ, เป‚เบ”เบเบเบฒเบ™เบ›เบดเบ”เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒ.

เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบกเบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบŠเบญเบเบซเบฒเบซเบผเบทเบšเปเปˆ, QuickScan เบ—เปเบฒเบญเบดเบ”เบžเบฐเบเบฒเบเบฒเบกเบŠเบญเบเบซเบฒเป„เบŸเบฅเปŒ
เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™ (เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบฅเบฐเบ”เบฑเบšเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เป‚เบ”เบเบเบปเบ‡เบเบฑเบš QuickScan),
เบซเบผเบทเบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเป„เบŸเบฅเปŒเบ—เบตเปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เป„เบŸเบฅเปŒ. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบซเบผเบฒเบ
เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เปเบ•เปˆเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ”เบตเบžเบฝเบ‡เบžเป - เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบซเบฅเบนเบซเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡
utilities เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™. เบชเบธเบ”เบ—เป‰เบฒเบ, เป„เบ”เป‰
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ„เบปเป‰เบ™เบซเบฒเปเบกเปˆเบ™, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบˆเปเป‰เบฒเบชเบญเบ‡เป€เบกเบฑเบ”เปเบเบเบญเบญเบ. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰ camp NT เบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เป€เบญเบปเบฒเบกเบฒเบˆเบฒเบ a เบเปเปˆเบชเป‰เบฒเบ‡ เป„เบŸเบฅเปŒเบ—เบตเปˆเบ™เบตเป‰:

เบ‚เปเป‰เป€เบชเบเบเปˆเบญเบ::SMFgen {
my($env, @tables) = @_;
foreach $t (@tables) {
$env->QuickScan(เบเปˆเบญเบ { /\b\S*?\.smf\b/g }, "$t.smf",
$env->{SMF_INCLUDE_PATH});
$env->เบ„เปเบฒเบชเบฑเปˆเบ‡(
["$t.smdb.cc","$t.smdb.h","$t.snmp.cc","$t.ami.cc", "$t.http.cc"],
"$t.smf",
q(
smfgen %( %SMF_INCLUDE_OPT %) %
)
);
}
}

[เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปเบšเบšเบŸเบญเบก `$env->QuickScan ...' เปเบฅเบฐ `$env->Command ...' เบšเปเปˆเบ„เบงเบ™เป€เบ›เบฑเบ™.
เบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบ•เปˆ, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ™เบตเป‰. เบญเบฑเบ™เบ™เบตเป‰เบ›เบฒเบเบปเบ”
to be a bug in Perl เบซเบผเบทโ€‹เบ„เบงเบฒเบกโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบœเบดเบ”โ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹; เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰
เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบชเบฐ เป€เปเบต เป„เบ›.]

เบ™เบตเป‰เบŠเบญเบเบซเบฒเบŠเบทเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เปเบšเบšเบŸเบญเบก .smf เปƒเบ™เป„เบŸเบฅเปŒ. เบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบŠเบทเปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ
เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™, เปเบ•เปˆเบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™ OK (เบเบปเบ™เป„เบเปเบกเปˆเบ™เบเบฒเบ™เปƒเบซเป‰เบญเบฐเป„เบžเบ‚เบญเบ‡เป„เบŸเบฅเปŒเป€เบžเบตเปˆเบกเป€เบ•เบตเบก;
เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เป€เบฅเบตเบโ€‹เบเบฑเบšโ€‹เบชเบปเบกโ€‹เบกเบธเบ”โ€‹เบ•เบดโ€‹เบ–เบฒเบ™โ€‹เบงเปˆเบฒโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ‚เบฒเบ”โ€‹เบซเบฒเบโ€‹เป„เบ›โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹
เป‚เบ„เบ‡เบเบฒเบ™, เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, smfgen, เบ–เบทเบเป€เบญเบตเป‰เบ™เบ•เบปเบงเบˆเบดเบ‡).

A scanner เปเบกเปˆเบ™ invoked เบžเบฝเบ‡ เปเบ•เปˆ เบชเปเบฒ เบฅเบฑเบš เป„เบŸเบฅ เปŒ เปเบซเบผเปˆเบ‡ เบ—เบตเปˆ เป„เบ”เป‰ เบฎเบฑเบš เบ–เป‰เบฒ เบซเบฒเบ เบงเปˆเบฒ เบกเบฑเบ™ เป€เบ›เบฑเบ™ เบ•เป‰เบญเบ‡ เบเบฒเบ™ เป‚เบ”เบ เบšเบฒเบ‡ เป€เบ›เบปเป‰เบฒ เบซเบกเบฒเบ เปƒเบ™
เบ•เบปเป‰เบ™เป„เบกเป‰. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบญเบตเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเป‰เบ‡เบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเปเบซเบผเปˆเบ‡เบ—เบตเปˆเปƒเบซเป‰.

เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบญเบทเปˆเบ™เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เบ”เบฝเบงเบเบฑเบ™. เบญเบฑเบ™เบ™เบตเป‰เปƒเบŠเป‰เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™,
เปเบฅเบฐเบเบฑเบ‡ (เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰) เบญเปˆเบฒเบ™เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡:

sub myscan {
เบ‚เบญเบ‡เบ‚เป‰เบญเบ(@เบฅเบงเบกเบ—เบฑเบ‡);
เป€เบฎเบฑเบ” {
push(@includes, /\b\S*?\.smf\b/g);
} เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ ;
@เบฅเบงเบกเบ—เบฑเบ‡
}

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡ loop เปเบกเปˆเบ™เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™, เบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš loop เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™
เป€เบžเบฒเบฐเบงเปˆเบฒเปเบ–เบงเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เปเบฅเป‰เบงเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเปเบเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบเบฑเบšเปเบซเบผเปˆเบ‡เปƒเบ”เบซเบ™เบถเปˆเบ‡
เป„เบŸเบฅเปŒเป‚เบ”เบ:

QuickScan $env \myscan, "$_.smf";

เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เปเบฅเบฐ เบ‚เปเป‰เบชเบฐ เป€เปœเบต เปเบ™เบฐ


Cons เปเบกเปˆเบ™เบฎเบฑเบเบชเบฒเป„เบงเป‰เป‚เบ”เบเบŠเบธเบกเบŠเบปเบ™เบœเบนเป‰เปƒเบŠเป‰. เป€เบžเบทเปˆเบญเบชเบฐเปเบฑเบ, เบชเบปเปˆเบ‡เบญเบตเป€เบกเบงเบซเบฒ cons-เบชเบปเบ™เบ—เบฐเบ™เบฒ-
[email protected] เบเบฑเบšเบฎเปˆเบฒเบ‡เบเบฒเบ เบˆเบญเบ‡.

เบเบฐเบฅเบธเบ™เบฒเบฅเบฒเบเบ‡เบฒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบ”เป†เป‚เบ”เบเบœเปˆเบฒเบ™ [email protected] เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ—เบฒเบ‡เป„เบ›เบชเบฐเบ™เบต.

เปƒเบŠเป‰ cons เบญเบญเบ™เป„เบฅเบ™เปŒเป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ onworks.net


เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบŸเบฃเบต

เบ”เบฒเบงเป‚เบซเบผเบ”เปเบญเบฑเบš Windows เปเบฅเบฐ Linux

  • 1
    Turkdevops
    Turkdevops
    TurkDevOps a ?k kaynak yaz?l?m
    geli?tirici topluuklar? DevTurks-เบ—เบตเบกเบ‡เบฒเบ™
    Taraf?ndan desteklenmektedir..
    เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”: https://github.com/turkdevopshttps://turkdevops.g...
    เบ”เบฒเบงเป‚เบซเบฅเบ” turkdevops
  • 2
    asammdf
    asammdf
    *asammdf* เป€เบ›เบฑเบ™เบ•เบปเบงเปเบเบเบงเบดเป€เบ„เบฒเบฐ Python เบ—เบตเปˆเป„เบง เปเบฅเบฐ
    เบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš ASAM (เบชเบฐเบกเบฒเบ„เบปเบกเบชเปเบฒเบฅเบฑเบš
    เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐ
    เบฅเบฐเบšเบปเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ) MDF / MF4
    (เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบงเบฑเบ”เปเบ—เบ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” asammdf
  • 3
    LAME (Lame เบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” MP3)
    LAME (Lame เบšเปเปˆเปเบกเปˆเบ™เบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” MP3)
    LAME เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบชเบถเบเบชเบฒเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰
    เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบฎเบฝเบ™โ€‹เบฎเบนเป‰โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ” MP3โ€‹. เป„เบ”เป‰
    เป€เบ›เบปเป‰เบฒเปเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ LAME เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡
    เบชเบฝเบ‡โ€‹เบ—เบฒเบ‡โ€‹เบˆเบดเบ”โ€‹เปƒเบˆโ€‹, เบ„เบธเบ™โ€‹เบ™เบฐโ€‹เบžเบฒเบšโ€‹เปเบฅเบฐโ€‹เบ„เบงเบฒเบกโ€‹เป„เบงโ€‹
    เบ‚เบญเบ‡ MP...
    เบ”เบฒเบงเป‚เบซเบฅเบ” LAME (Lame Aint an MP3 Encoder)
  • 4
    wxPython
    wxPython
    เบŠเบธเบ”เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ Python เบ—เบตเปˆ
    เบซเปเปˆเบซเป‰เบญเบ‡เบฎเบฝเบ™ GUI เบ‚เป‰เบฒเบกเป€เบงเบ—เบตเบˆเบฒเบ
    wxWidgets.. เบœเบนเป‰เบŠเบปเบก: เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบœเบนเป‰เปƒเบŠเป‰
    เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš: X Window System (X11), Win32 ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” wxPython
  • 5
    packfilemanager
    packfilemanager
    เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒ Total War pack
    เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เป€เบฅเบตเปˆเบกโ€‹เบˆเบฒเบโ€‹เบชเบฐโ€‹เบšเบฑเบš 1.7โ€‹. เบ
    เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบš Warscape
    modding: ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” packfilemanager
  • 6
    IPerf2
    IPerf2
    เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ
    เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” TCP เปเบฅเบฐ UDP เบ”เป‰เบงเบเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ
    เบ›เบฐเบกเบฒเบ™เบ—เบฑเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ เปเบฅเบฐ latency. เป„เบ”เป‰
    เป€เบ›เบปเป‰เบฒเปเบฒเบเบฅเบงเบกเป€เบ–เบดเบ‡เบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง
    iperf cod...
    เบ”เบฒเบงเป‚เบซเบฅเบ” IPerf2
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Linux เบ„เบณ เบชเบฑเปˆเบ‡

Ad