เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ makepp_cookbook เบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเปเบ OnWorks เบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเปเบฎเบเบเบดเปเบเบเบฃเบตเปเบเบเปเบเปเบซเบเบถเปเบเปเบเบซเบผเบฒเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเปเบฅเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบฑเปเบ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator
เปเบเบเบเบฒเบ:
NAME
makepp_cookbook -- เบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ makefiles เบชเปเบฒเบฅเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเปเบฒเบเป
เบฅเบฒเบเบฅเบฐเบญเบฝเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเปเบเบเบปเบเบงเปเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเปเบกเบตเปเบเปเบเบตเบเบญเปเบฒเบเบเบนเปเบกเบทเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบฐเบฅเบดเบ, เปเบเบฒเบฐเบงเปเบฒเปเบงเบปเปเบฒเบเบปเบเปเบเบเบปเบเบกเบฒ
เบเปเปเบกเบตเปเบเบชเบปเบเปเบเปเบเปเปเปเบเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบเบเบปเบงเบกเบฑเบเปเบญเบ - เบเบงเบเปเบฎเบปเบฒเบชเบปเบเปเบเบเบฝเบเปเบเปเบเบปเบเปเบเปเบฎเบฑเบ.
เบชเบฐเบเบฑเปเบ เบเบถเปเบกเบชเบนเบเบญเบฒเบซเบฒเบเบเบตเปเบเบถเปเบเบเบทเบเบเบณเบกเบฒเบฅเบงเบกเบเบฑเบเปเบเบทเปเบญเบซเบงเบฑเบเบงเปเบฒเบเบปเบเปเบฎเบปเบฒเบเบฐเบชเบฒเบกเบฒเบเปเบเปเบชเบดเปเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบเปเบญเบเบเบฒเบ
เบขเปเบฒเบเบงเปเบญเบเปเบงเบเบฒเบเบเบปเบงเบขเปเบฒเบเปเบเบเบเปเปเบกเบตเบเบฒเบ wading เบเปเบฒเบเบเบนเปเบกเบท. เบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเบเบดเบก
เบเปเบฒเบเบฒเบก, เปเบเบเบฐเบเบฐเบเบตเปเบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเบฑเบ stumbling เบเบฐเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบ
เบเปเบฒโเบเบฒเบกโเบเบตเปโเบเบทเบโเบเบฒเบกโเปเบฅเบทเปเบญเบเป.
เบเบฒเบเบเปเปเบชเปเบฒเบ เบซเปเบญเบเบชเบฐเบซเบกเบธเบ
Do เบเปเบฒเบ เบเปเป เบเปเบญเบเบเบฒเบ a เบซเปเบญเบเบชเบฐเบซเบกเบธเบ?
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบซเบฑเบเปเบเบเบเบฒเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเปเบฒเบเบงเบเปเบกเบเบนเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบ, เปเบเปเบฅเบฐ
เปเบเบดเปเบเบญเบฒเปเบชเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบญเบเบเบปเบเปเบญเบ. เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เปเบเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบญเบเบเบปเบเปเบญเบ,
เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบเบเบฒเบเบชเบธเบเบเปเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฑเบเบซเบกเบปเบ.
เปเบเบซเบผเบฒเบเปเบเปเบฅเบฐเบเบต, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบงเปเบฒเปเบเบเบเบตเปเบเบฐเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เบกเบตเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบตเบเบงเปเบฒ. เบซเปเบญเบเบชเบฐเปเบธเบ
เบเปเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบทเบเบเปเบญเบเปเบเปเปเบเปเบฒเปเบเปเบฅเบฐเปเบกเบเบนเบเบเปเปเบชเบฒเบกเบฒเบเบซเบผเบทเบเบฐเบเปเปเบเบทเบเบเปเบฒเปเบเปเบเบทเบเปเบเบญเบฑเบเบญเบทเปเบ
เปเบเบเบเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบเปเบฎเบฑเบเบเปเปเบเบปเบเบเปเบญเบเบเบฑเบเบซเบกเบปเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบฅเบฐเบเปเปเบกเบต
เบเปเปเบเบต. เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบตเบเบฐเปเบซเบเบเปเบเบเปเบฅเบฐเบเบตเบเปเปเปเบเบเบตเป:
1. เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบกเบตเบเปเปเบเบญเบ subroutines เบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบ
เปเบเบฅเปเบเบฅเบก, เปเบฅเบฐเบเปเปเบกเบตเปเบเบฅเปเบเบฅเบกเปเบเปเบเป 100% เบเบญเบเปเบเบเบชเปเบฒเบเบเปเบญเบ - เปเบเปเบฅเบฐเปเบเบเบเบฒเบเปเบเป a
เบเบธเบโเบเปเบญเบโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบปเบเบเบตเป (a
.a เปเบเบฅเป, เบซเบผเบทเปเบเบฅเปเบเบตเปเปเบเบฑเบเปเบงเป).
2. เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบกเบตเปเบกเบเบนเบเบเบตเปเบเบงเบเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบ, เปเบฅเบฐเบเปเบฒเบ
เบเปเบญเบเบเบฒเบเปเบซเบผเบเบกเบฑเบเปเบเบเปเบเบเบฒเบกเบดเบเปเบเบทเปเบญเปเบซเปเปเบเปเบฅเบฐเปเบเบเบเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบชเปเบฒเปเบเบปเบฒเปเบเบเบเปเบฒเบเบซเบฒเบ
เบซเปเบชเบฐเบซเบกเบธเบ. เบซเปเบญเบเบชเบฐเปเบธเบเปเบเบเปเบเบเบฒเบกเบดเบเบชเบฒเบกเบฒเบเบเบฐเบซเบเบฑเบเบเบทเปเบเบเบตเปเปเบเบฅเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเป เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเปเบเบฑเบเบเบธเบ
เบเบฒเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบเบปเบเปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบเบฝเบเปเบเปเบซเบเบถเปเบเบชเปเบฒเปเบเบปเบฒเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบซเบผเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบซเบกเบปเบเบเบญเบ
เปเบเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบตเปเปเบเปเบกเบฑเบ.
3. เปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบญเบเบเปเบฒเบเปเบกเปเบเบเบฒเบงเบซเปเบฒเบก, เบเบฒเบเบเปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเปเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบ
เปเบเบเบเบฒเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบฑเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป.
เบเบฒเบเบเปเบฒเปเบเปเบซเปเบชเบฐเบซเบกเบธเบเบเบปเบเบกเบตเบเปเปเปเบชเบเบเบปเปเบเบเปเบซเบเบถเปเบ: เปเบเบเบฒเบเบฅเบฐเบเบปเบ (เปเบเบฑเปเบ Linux), เบเปเบฒเบชเบฑเปเบ
เบเบตเปเบเปเบฒเบเปเบเบทเปเบญเบกเบเปเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฒเบ. เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบเบฐเบกเบงเบเบเบปเบเบซเปเบญเบเบชเบฐเปเบธเบ
เปเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเบเบญเบเบกเบฑเบ. เบกเบฑเบ grabs เบเบธเบเบชเบดเปเบเบเบตเปเบกเบฑเบเบเบดเบเบงเปเบฒเบกเบฑเบเบเปเบญเบเบเบฒเบเบเบฒเบ
เปเบเปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเปเปเปเบ. เบเปเบฒเบเบฒเบเบซเปเบชเบฐเบซเบกเบธเบเบเปเปเบกเบฒเบซเบกเบฒเบเปเบเบดเบ a
เบชเบฑเบเบเบฒเบฅเบฑเบเบเบตเปเบเบฑเบเบเปเปเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเบเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบฒเบเบกเบฒ, เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบเปเปเปเบเป
เบฎเบนเปเบงเปเบฒเบเบฐเบเบฑเบเบเบทเบเปเบเบเปเบญเบเปเบฅเบฐ grab เบกเบฑเบเบเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบฒเบเบกเบฒ. เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบชเบดเปเบเบเปเบฒเปเบเบฑเบ
เปเบเบทเปเบญเบฅเบฒเบเบเบทเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบซเบผเบฒเบเบเบฑเปเบเปเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ linker. (เบเปเบญเบเปเบเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบเบเบเบฒเบ
เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเปเบเปเปเบฎเบฑเบเบเปเปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบซเบกเบปเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเบฒเบกเปเบเบทเปเบญ. เปเบเบเบเบฒเบเบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเปเบฎเบฑเบ
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบกเบฑเบโเบงเบดโเบเบตโเบเบฒเบโเปเบฅเบทเบญเบโเบเบตเปโเปเบเบฐโเบเปเบฒโเบเปเบฒเบโเบฅเบธเปเบกโเบเบตเปโ, เบเบญเบโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเปเบเบตเปเบกโเปเบเบตเบกโ.)
เบเบฒเบเบเปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเบกเบตเบเปเปเปเบชเบเบซเบผเบฒเบ. เบซเบเปเบฒเบเปเบฒเบญเบดเบ, เปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฅเบฑเบเบเปเบญเบ
เบเปเบฒเบเบงเปเบฒเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเปเปเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเปเบเบเบเบฒเบเบญเบทเปเบ, เปเบเบฒเบฐเบงเปเบฒ
เบกเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบปเบเปเบซเบฑเบเปเบฅเบฐเปเบซเบผเบ. เบญเบฑเบเบเบตเบชเบญเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบเปเบซเบงเบเบฑเบเบซเบกเบปเบ
เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบทเบเบเปเบญเบ; เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเบเบฑเบเบฅเบญเบเปเบเบเบเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเป,
เบเปเบฒเบเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบเบฑเบเบฅเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบญเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ. เบญเบฑเบเบเบตเบชเบฒเบก, เปเบเบเบฒเบเบฅเบฐเบเบปเบ, เบกเบฑเบ
เปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเบเบตเบเบฑเบเบฅเบฐเบซเบฑเบเบเบฒเบเปเบเบซเปเบญเบเบชเบฐเปเบธเบเบเบตเปเปเบเปเบเบเบฑเบเปเบเบฒเบฐเบงเปเบฒเบเบปเบงเบเบตเบเบฑเบเบเปเปเบฎเบญเบเบฎเบฑเบ
เปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบต.
เบเปเบฒเปเบกเบเบนเบเบเบญเบเปเบเบปเปเบฒเบเปเปเปเบเบตเบเบเบทเบเปเบเปเปเบเปเบเบเบเบฒเบเบญเบทเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบตเปเบซเบเบเบปเบเบซเบเปเบญเบเบเบตเปเบเบฐเปเบเป
เบซเปเบญเบเบชเบฐเปเบธเบ: เบเปเบฒเบเปเบเปเบฎเบฑเบเบเปเปเปเบชเบเบเบฑเบเปเบปเบเบเบญเบเบเบฒเบเปเบเปเบซเปเบญเบเบชเบฐเปเบธเบ เปเบฅเบฐเบเปเปเบกเบตเบเปเปเบเบตเปเบเป.
เปเบเบฑเบเบเบดเบเบเบตเปเบเปเบญเบเบกเบฑเบเปเบกเปเบเบเบฒเบเปเบเปเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบเบเปเบฅเบฑเปเบเบฅเบฑเบ, เบเปเบญเบเบเบตเปเบกเบฑเบเบกเบตเบขเบนเป.
เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบ Linux:
my_module.o : $(filter_out my_module.o, $(wildcard *.o))
ld -r -o $(output) $(inputs)
เบชเบดเปเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบทเบเบฒเบเบชเปเบฒเบเบญเบฑเบเบญเบทเปเบ .o เปเบเบฅเปเปเบญเบตเปเบเบงเปเบฒ my_module.o, เปเบเบดเปเบเบเบฐเบเบฐเบเบญเบเบเปเบงเบ
เบเบฑเบเบซเบกเบปเบเบเบญเบ .o เปเบเบฅเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเป. เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเบเบฐเปเบเปเปเบเปเบเบฑเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบญเบ
เบเบฒเบเบญเปเบฒเบเบญเบดเบเบเบฒเบกเบเบตเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป, เปเบฅเบฐเบเบฐเบเปเบญเบเปเบซเปเบเบฒเบเบญเปเบฒเบเบญเบดเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบเบทเบเปเบเปเปเบเปเบ a
เบเบฑเปเบโเบเบญเบโเบเปเปโเปเบโเบเบญเบโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโ. เปเบเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ, เปเบกเบทเปเบญเบเปเบฒเบเบชเปเบฒเบเปเบเบผเปเบเบผเบกเบเบญเบเบเปเบฒเบเปเบเบเบตเปเบชเบธเบ,
เปเบเบเบเบตเปเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ libmy_module.a or libmy_module.so, เบเปเบฒเบเบเบฝเบเปเบเปเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ
my_module.o. เปเบกเบทเปเบญเบเปเบฒเบเปเบเบทเปเบญเบกเบเปเป .o เปเบเบฅเป, เบเปเบฒเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเบเบฑเบเบเบฒเบเบเบถเปเบเบเบฑเบเบเปเบฒเบชเบฑเปเบเปเบ
linker เบเปเบฒเบชเบฑเปเบ.
เบเปเบญเบเปเบซเป เปเบเปเบเปเปเบฒ เบฎเบนเบ เบญเบญเบ เบเบตเป เบซเปเบญเบเบชเบฐเบซเบกเบธเบ เปเบกเบเบนเบ เบกเบต เบเปเบฒเปเบเบฑเบ
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบกเบตเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเปเบเปเบเบดเบ, เบเปเบญเบเบเบตเปเปเบเบเบเบฒเบเปเบเบซเบเบถเปเบเบเปเบญเบเบเบฒเบเบเบฝเบเปเบเปเบชเบญเบเบชเบฒเบกเปเบเบฅเปเบเบฒเบเบกเบฑเบ
(เปเบเบเบเบตเปเบเบฐเปเบเบฑเบเปเบเปเบฅเบฐเปเบกเบเบนเบเบเบฝเบง), makepp เบญเบฒเบเบเบฐเบชเบฒเบกเบฒเบเบเบดเบเบญเบญเบเบงเปเบฒเปเบกเบเบนเบเปเบ
เบเปเบญเบเบเบฒเบเบเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบฅเบฐเบเบฐเบเบญเบเบกเบตเบเบฝเบเปเบเปเบเบนเปเบเบตเปเบขเบนเปเปเบเบเบฒเบเบเปเปเบชเปเบฒเบ. เบเบตเปเบชเบฒเบกเบฒเบเบเปเบงเบเบเบฐเบขเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก
เปเบงเบฅเบฒเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเปเบญเบกเบเบฑเบเปเบเบเบเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเบเปเป bother เบเบฑเบ
เบฅเบงเบเบฅเบงเบกเปเบกเบเบนเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบชเบฐเปเบเบฒเบฐเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเป.
เบเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบญเบเปเบเบปเปเบฒเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเบชเบปเบเบเบดเบชเบฑเบเบเบฒเบเบตเปเบซเบเปเบฒเบเบตเปเบซเบผเบทเบเบฑเปเบเบฎเบฝเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฐเบเบฒเบเปเบงเปเปเบ
เปเบเปเบก xyz.h เบเบทเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเปเบเปเบเบฅเปเปเบซเบผเปเบเบเบตเปเบฅเบงเบเบฅเบงเบกเบเบฑเบ xyz.o (เปเบเบฑเปเบ, เปเบเบปเปเบฒ
เบขเปเบฒเปเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบญเบญเบเปเบเบฑเบ xyz1.o เปเบฅเบฐ xyz2.o), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเป
"$(infer_objects)" เบเบฑเบเบเบฑเบเปเบเบทเปเบญเบเบญเบ makepp เบเบตเปเบเบฐเบเบถเบเบเบฝเบเปเบเปเปเบกเบเบนเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฒเบ
เบซเปเบชเบฐเปเบธเบ. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบตเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบกเบตเปเบกเปเบเบฐเบเบฑเปเบเบซเบผเบฒเบเบชเบดเบเปเบเบฅเปเบฅเบงเบก.
เปเบเบเบเบทเปเบเบเบฒเบเปเบฅเปเบง, "$(infer_objects)" เบเบงเบเปเบเบดเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบ .h เปเบเบฅโเปโเบเบตเปโเบฅเบงเบกโ, เปเบฅเบฐโเปเบเบดเปเบโ
เบชเปเบฒเบฅเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ .o เปเบเบฅเป. เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบฅเบฐเปเบเบเบเบฒเบเบขเปเบฒเบเปเบงเบงเบฒ
เบฎเปเบงเบกเบเบฑเบ, เบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบซเบเบฑเบเปเบงเบฅเบฒเบเบฒเบเบฅเบงเบเบฅเบงเบก, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเบเปเปเปเบเบตเบเปเบเบทเปเบญเบเบตเปเบเบฐเบฅเบงเบเบฅเบงเบกเปเบกเบเบนเบเบเบญเบ
เบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเปเบเบเบเบฒเบเบเปเปเปเบเปเปเบเป.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบงเบดเบเบตเบเบตเปเบเปเบญเบเปเบเปเบกเบฑเบ:
my_program: $(infer_objects *.o, $(LIB1)/*.o $(LIB2)/*.o)
$(CXX) $(inputs) -o $(output) $(SYSTEM_LIBRARIES)
เบเบฑเบเบเบฑเบ "$(infer_objects )" เบเบฑเบเบเบทเบ argument เบเปเบฒเบญเบดเบเบเบญเบเบกเบฑเบ (เบซเบผเบฑเบเบเบฒเบเปเบฎเบฑเบ wildcard
expansion on it), เปเบฅเบฐเบเบฑเบเปเบเบดเปเบเบเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเปเปเบเบเบฒเบเปเบเปเบเบฝเบเบเบตเบชเบญเบเบเบญเบเบเบปเบ, เบชเปเบฒเบฅเบฑเบ
เปเบเบฅเปเบเบตเปเบกเบตเบเบทเปเบเบทเบเบฑเบเบเบฑเบเบเบทเปเบเบญเบเบญเบฑเบเปเบเบเบถเปเบ .h เปเบเบฅเปเบเบตเปเบฅเบงเบกเบขเบนเปเปเบเปเบเบฅเปเปเบเปเปเบเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบญเบเบกเบฑเบ
เบเบฒเบเปเบเปเบเบฝเบ. เบเปเบฒเบเบปเบเปเบเบฅเปเบเบฑเปเบเบเปเบฒเบง, เปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป.
เบเบฒเบเบเปเปเบชเปเบฒเบ a เปเบเบเปเบฒเบชเบฐเบเบดเบ เบซเปเบญเบเบชเบฐเบซเบกเบธเบ
เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเปเบเปโเปเบเบงเปโเบฒโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเปเบฅเบฐโเบเบฒเบโเปเบเบทเปเบญเบกโเบเปเปโเปเบเบตเปเบกโเปเบเบตเบกโเปเบกเปเบโเบเปเปโเบกเบตโเบซเบผเบทโ
เบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบ, เบกเบตเบชเบญเบเบงเบดเบเบตเบเบตเปเบเบฐเปเบฎเบฑเบเบกเบฑเบ. เบซเบเปเบฒเบเปเบฒเบญเบดเบ, เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบ
เบเปเบญเบเบเบตเปเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบทเบเบฅเบฐเบเบธเปเบงเปเบขเปเบฒเบเบเบฑเบเปเบเบ:
LIBRARY_FILES = abcde
libmine.a: $(LIBRARY_FILES).o
&rm -f $(เบเบปเบเบเบฐเบฅเบดเบ)
$(AR) cr $(output) $(inputs)
ranlib $(output) # เบญเบฒเบเบเบฐเบเปเปเบเปเบฒเปเบเบฑเบ, เบเบถเปเบเบเบฑเบ OS เบเบญเบเบเปเบฒเบ.
&rm เปเบกเปเบเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบเปเบ "rm" เบเบญเบ makepp. เบเปเบฒเบเปเบฒเบเบเบธเปเบเปเบเบตเบเบเบฑเบเบเบฒเบเบเบฝเบ makefiles, เบเปเบฒเบเบญเบฒเบเบเบฐเปเบเบฑเบ
เปเบเบเปเบเปเบฅเบฑเบเบเปเบญเบเปเบเบเบเปเบฒเบชเบฑเปเบเบเบตเป; เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเบทเบเปเบเปเบเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
libmine.a: $(LIBRARY_FILES).o
$(AR) ru $@ $? #เบเปเปเปเบเบฐเบเบณ!!!!!!!
ranlib $(เบเบปเบเบเบฐเบฅเบดเบ)
$ เบขเบนเปเปเบช? (เบเบฑเบเปเบญเบตเปเบเบงเปเบฒ "$(changed_inputs)") เปเบกเปเบเบเบปเบงเปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเปเบเบฅเปเบเปเบฒเบเป
เปเบเบดเปเบเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเปเบเปเบเปเบเบฑเปเบเบชเบธเบเบเปเบฒเบเบเบตเปเบซเปเบญเบเบชเบฐเปเบธเบเบเบทเบเบชเปเบฒเบเบเบถเปเบ, เปเบฅเบฐ $@ เปเบกเปเบเบเบฐเบกเบฒเบเบเบทเบเบฑเบ
เปเบเบฑเบ "$(output)".
เบงเบดเบเบตเบเบฒเบเบเบตเปเบเปเปเปเบเปเบเบทเบเปเบเบฐเบเปเบฒเปเบซเปเบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบซเบผเบฒเบ:
ยทเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบเบปเปเบฒเปเบญเบปเบฒเปเบเบฅเปเปเบซเบผเปเบเบญเบญเบเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบ. เบกเบฑเบเบเบฑเบเบขเบนเปเปเบ
เบซเปเบชเบฐเปเบธเบ, เปเบเบฒเบฐเบงเปเบฒเปเบเบปเปเบฒเบเปเปเปเบเปเบชเปเบฒเบเบซเปเบชเบฐเปเบธเบเบเบทเบเปเปเปเบเบฑเปเบเปเบเปเบเบปเปเบ. เบเบฑเปเบเบเบฑเปเบ, เบชเบดเปเบเปเบ
เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเบฐเบกเบต stale เปเบเป .o เปเบเบฅเป, เปเบฅเบฐเบเบตเปเบชเบฒเบกเบฒเบ screw เปเบเบดเบเบเบญเบเบเปเบฒเบ
เบเปเปเบชเปเบฒเบ. (เบเปเบญเบเปเบเบตเบเบชเบฑเบเบชเบปเบเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเปเบกเบทเปเบญเบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเปเบญเบปเบฒเบฅเบฐเบซเบฑเบเบเบฒเบ
เบเบฒเบเปเบเบเบเบฒเบ: เบเปเบญเบเบชเบทเบเบเปเปเบฅเบถเบเปเบเบฅเปเปเบฅเบฐเบกเบฑเบเบเบฑเบเปเบเบทเปเบญเบกเบเปเป, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบดเบเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบกเปเบ
เบเบฒเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบกเบทเปเบญเบเบปเบเบญเบทเปเบเบเปเปเบชเปเบฒเบเปเบเบเบเบฒเบเบเบทเบเปเบซเบกเป, เบกเบฑเบเบเปเปเปเบเปเปเบเบทเปเบญเบกเบเปเปเปเบเป
เปเบเบตเปเบกเปเบเบตเบก! เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเปเบเบปเปเบฒ .o เปเบเบฅเปเบเบฑเบเบขเบนเปเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ.)
เบเบญเบเบเบฒเบเบเบตเป, เบญเบตเบเบเบฒเบกเบเบฒเบเปเบฅเบทเบญเบเบเบญเบเบเปเบฒเบเบเบตเปเบเบฐ "ar" เปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบเปเบฒเบ "ar" (เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบ
เปเบเปเบเบปเบงเปเบฅเบทเบญเบ "q" เปเบเบ "r"), เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบปเบกเบเบฑเบเบกเบตเบซเบฅเบฒเบเบฎเบธเปเบเบเบญเบ
เบเบฝเบงเบเบฑเบ .o เบเบฒเบเปเบ .a เปเบเบฅเป. เบเปเบฒเบชเบฐเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเปเบฒเบเบปเบเปเบฅเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, the
linker เบญเบฒเบเบเบฐเบเบฐเบเบฒเบเบฒเบกเบเบถเบเบเบฑเบเบชเบญเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เบเบตเปเบญเบฒเบเบเบฐเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเปเบเบต.
เบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเบเปเบฒเบญเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบญเบปเบฒเปเบเบฅเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เปเบฅเบฐเบชเปเบฒเบเบกเบฑเบเบเบฒเบ scratch. เบเบตเปเบเบฐ
เปเบเปเปเบงเบฅเบฒเบเบปเบเบเบงเปเบฒเบเบฒเบเบญเบฑเบเปเบเบเปเบกเบเบนเบเปเบเบซเปเบญเบเบชเบฐเปเบธเบเปเบฅเบฑเบเบเปเบญเบ, เปเบเปเบเปเปเบเบปเบเบเบฒเบเปเบ; เบชเบธเบ
เบเบญเบกเบเบดเบงเปเบเบตเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก, เบเปเบฒเบเบงเบเบเบญเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบเปเบฅเบดเปเบเบเปเบเบ ar เปเบเบเบเบฒเบเปเบกเปเบเบซเบเปเบญเบเปเบกเบทเปเบญเบเบฝเบเบเบฝเบ
เบเบฑเบเบชเบดเปเบเบเบตเป C compiler เปเบเปเปเบงเบฅเบฒเปเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบปเบเบเบฐเบเบด, เบชเบฐเบเบฑเปเบเบกเบฑเบเบเปเปเบเบธเปเบกเบเปเบฒเบเบตเปเบเบฐเบเบฑเบเบงเบปเบ
เบเปเบฝเบงเบเบฑเบ.
ยทเบซเบเบถเปเบเปเบเบงเบดเบเบตเบเบตเป makepp เบเบฐเบเบฒเบเบฒเบกเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบตเปเบเบทเบเบเปเบญเบเปเบกเปเบเบกเบฑเบเบเบฐ
เบเปเปเบชเปเบฒเบเบเบทเบเปเบซเบกเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเปเบเบทเปเบญเบชเปเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบ. เปเบเป
เปเบเป $? เบเบปเบงเปเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเปเบเบตเบเบเบฑเบเบซเบฒ, เปเบเบฒเบฐเบงเปเบฒเปเบเปเบฅเบฐเบเบฑเปเบเบเบตเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเปเบเบทเบเบเบฑเบเบเบธเบ,
เบเปเบฒเบชเบฑเปเบเบเปเปเบชเปเบฒเบเปเบกเปเบเปเบเบเบเปเบฒเบเบเบฑเบ. (เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบชเบฐโเบเบฑเบโเบเบฑเปเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบตเปโ
":build_check ignore_action"; เปเบเบดเปเบ makepp_build_check เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ.)
ยท เบเบฒเบโเบเบฑเบโเบเบธเบโเบเบฒเบโเบฎเบงเบโเบฎเบงเบกโเปเบเบโเบเบตเปโเบเบฐโเบชเปเบฒเบโเปเบซเบกเปโเบกเบฑเบโเบเบฐโเปเบฎเบฑเบโเปเบซเปโเบกเบฑเบโเปเบเบฑเบโเปเบโเบเปเปโเปเบเปโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบ makepp เบเบฑเบโ
เปเบญเบปเบฒเปเบเบฅเปเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบเบปเปเบฒเปเบเปเบ build cache (เปเบเบดเปเบ makepp_build_cache เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ).
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบปเบเบงเปเบฒเบฅเบฒเบเบเบทเปเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบฅเบฑเบเบเปเบญเบเบเปเบฒเปเบเบฑเบเบเบงเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเบเปเบฒ a
เปเบเบเบเบฒเบเปเบกเปเบ undergoing เบเบฒเบเบเบฑเบเบเบฐเบเบฒเบขเปเบฒเบเปเบงเบงเบฒเปเบฅเบฐเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ. เบกเบฑเบ
เบญเบฒเบเบเบฐเบเปเบฒเบเบเบงเปเบฒเบเบตเปเบเบฐเบชเปเบฒเบเบซเปเบญเบเบชเบฐเปเบธเบเปเบเบเปเบเปเบเบปเบงเปเบเบ, เปเบเบฑเปเบเบเบตเป:
libmine.a: $(only_targets *.o)
&rm $(เบเบปเบเบเบฐเบฅเบดเบ)
$(AR) cr $(output) $(inputs)
เบเบตเปเปเบฎเบฑเบเปเบซเปเบเบฑเบเบซเบกเบปเบ .o เปเบเบฅเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ. เบเบปเบงเปเบเบ
เบเบปเบเบเบฑเบเบญเบฑเบเปเบเบเบถเปเบ .o เปเบเบฅเปเบเบตเปเบกเบตเบขเบนเปเบซเบผเบทเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเป, เบเบฑเปเบเบเบฑเปเบเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฅเปเบเปเป
เบเบฑเบเบกเบตเบขเบนเป.
เบเบฑเบเบเบฑเบ "only_targets" เบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบปเบเปเบงเบฑเปเบ .o เปเบเบฅโเปโเบเบตเปโเบเปเปโเบกเบตโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโ
เปเบซเบผเปเบเปเบเบฅเปเบญเบตเบเบเปเปเปเบ. เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบกเบตเปเบเบฅเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒ xyz.c เบเบตเปโเบเปเบฒเบโเบเปเบฒโเปเบเปโเปเบเบทเปเบญโเปเบญเบปเบฒโเปเบเบปเปเบฒโเปเบโเปเบโเบเบญเบโเบเปเบฒเบโ
เบซเปเบชเบฐเปเบธเบ. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบกเบต xyz.o เปเบเบฅโเปโเบเบญเบโเบญเปเบญเบกโเบเปเบฒเบโ. เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบฅเบถเบ xyz.c
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบฅเปเบฒเบชเบฐเปเบซเบก, เปเบเปเบเปเบฒเบเบฅเบทเบกเบฅเบถเบ xyz.o. เปเบเบเบเปเปเบกเบตเบเบฒเบ "เบเบฝเบเปเบเป_targets"
เปเปเบฒ เบเบตเป, xyz.o เบเบฑเบเบเบฐเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบ .o เปเบเบฅเปเบฅเบงเบกเบขเบนเปเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ.
เบเบฒเบเบเปเปเบชเปเบฒเบ a เบเบฒเบเปเบเบทเปเบญเบเปเบซเบง เบซเปเบญเบเบชเบฐเบซเบกเบธเบ
เบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบเบซเปเบญเบเบชเบฐเปเบธเบเปเบเบเปเบเบทเปเบญเบเปเบซเบงเปเบกเปเบเบเบถเปเบเบเบฑเบเบฅเบฐเบเบปเบเบเบฑเบเปเบปเบ. เบเปเบญเบเบเบฐเบชเบนเบ
เปเบเบฐเบเปเบฒเปเบซเปเปเบเป libtool เปเบเบทเปเบญเบชเปเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบเปเบเบทเปเบญเบเปเบซเบง (เปเบเบดเปเบ
<http://www.gnu.org/software/libtool/>), เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบดเบเบญเบญเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบกเบฑเบ
เปเบงเบเบตเบเบญเบเบเปเบฒเบ, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ makefile เบเบญเบเบเปเบฒเบเบเบฐเบชเบทเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเบฝเบเปเบเบฑเบ
OS เบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ. เปเบเบดเปเบเปเบญเบเบฐเบชเบฒเบ libtool เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ. เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบ Makefile:
LIBTOOL := libtool
libflick.la : $(only_targets *.lo)
$(LIBTOOL) --mode=link $(CC) $(inputs) -o $(output)
%.lo : %.c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(input) -o $(output)
เบเบฒเบเบเปเปเบชเปเบฒเบ on เบซเบผเบฒเบ เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ เปเบเบทเปเบญเบ or เปเบเบทเบญเบเปเบฒเบ
เบซเบเบถเปเบเปเบเบเบฑเบเบซเบฒเบเบตเปเบซเบเปเบฒเบฅเปเบฒเบเบฒเบเบเบตเปเบชเบธเบเบเบฑเบ makefiles เปเบกเปเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบเบทเบญเบเบเปเปเปเบเบตเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบ
เบชเบฐเบซเบผเบฑเบเปเบเปเบเปเปเบเบทเปเบญเบเบญเบทเปเบ เบซเบผเบทเปเบเบทเบญเบเปเบฒเบเบญเบทเปเบ. เบเปเบฒ makefiles เบเบญเบเปเบเบปเปเบฒเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบ
เบเบธเบเปเปเบเบทเปเบญเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบเปเบฅเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบเบฒเบเบเบฑเบเบฅเบฝเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบขเปเบฒเบ
script. เปเบเปเบเปเบฒเบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเปเบฒเบเบงเบเบซเบเปเบญเบ, เบกเบตเบซเบผเบฒเบเบงเบดเบเบต
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบซเบฒเบเบฑเบเบซเบฒเบเบตเป:
เบเบฒเบเบเปเบฒเปเบเป a เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ เบเบฐเบเบญเบเบเปเบงเบ เปเบญเบเบฐเบชเบฒเบ in เบเบฑเบเบซเบกเบปเบ เปเบเป เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก
เปเบเบเบญเบเบเบปเปเบเบเบญเบเปเบเปเบฅเบฐ makefile, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบญเบเบกเบตเปเบชเบฑเปเบเปเบเบฑเปเบเบเบตเป:
เบฅเบงเบกเปเบญเบปเบฒ system_defs.mk
เปเบเบฅเป system_defs.mk เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฐเบเบทเบเบเบฑเปเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบปเบ
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบซเปเปเบเปเบฅเบเบฐเบเปเบฅเบตเบชเปเบฒเบเบเบญเบเบเปเบฒเบเบเบทเบเบฑเบเปเบเบเบธเบเปเบเบทเปเบญเบเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบชเป
system_defs.mk เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบฒเบเปเบเบดเบเบชเปเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต, เบซเบผเบทเบญเบทเปเบเปเบชเบฐเบซเบเบญเบเปเบชเบฑเปเบเบเบฒเบเบฅเบงเบก
to makepp เปเบเบเปเบเปเบเบปเบงเปเบฅเบทเบญเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ "-I".
เบเบตเปเปเบกเปเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฐเปเบเบเบเบญเบเบเบฒเบเปเบเบฑเบเบเบงเบเบเบตเปเบเบฐเปเบฎเบฑเบ, เปเบเปเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบตเบเปเบฒเบซเบฒเบเบงเปเบฒเบกเบตเบเปเบฒเบเบงเบ huge เบเบญเบ
เบเบงเบฒเบกเปเบเบเบเปเบฒเบ.
เบเบฒเบเบเปเบฒเปเบเป if เบเบปเบเบฅเบฒเบเบเบฒเบ
เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเบตเปเบฎเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบฎเบฑเบ, เปเบเปเบเบปเบเบเบฐเบเบดเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบ.
ifsys i386
CC := gcc
เบญเบทเปเบ ifsys sun4u
CC:=cc
เบญเบทเปเบ ifsys hpux11
CC = c89
เบชเบดเปเบเบชเบธเบ
เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบฐโเปเบฎเบฑเบโเปเบกเปเบโเปเบเบทเปเบญโเบเบญเบโเบซเบฒโเปเบเบโเบเบฒเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบโเบซเบผเบทโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเบซเบผเบทโเบฅเบงเบกโเปเบญเบปเบฒโเปเบเบฅโเปโเปเบโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ
เบชเบฐเบเบฒเบเบเบตเป, เบญเบฒเบเบเบฐเบกเบตเบงเบดเบเบตเบเบตเปเบเบตเบเบงเปเบฒ (เปเบเบดเปเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป).
เปเบเบฃเปเบเบฃเบกเบเบญเบเบซเบฒ, first_available, เบเบญเบเบซเบฒเปเบเบฅเป
เบซเบเปเบฒเบเบตเปเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบเบปเปเบเบซเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบเบฅเบฐเบเบปเบเบเบญเบเปเบเบปเปเบฒเปเบเบทเปเบญเบเบญเบเบซเบฒ
เปเบเบฅโเปโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบกโ. เบญเบฑเบเบเบตเปเบเปเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบทเบเบฑเบเบชเบฐเบเบฃเบดเบ configure, เปเบเปเบเบญเบ, เปเบเปเบเปเบญเบเบเบปเบเบกเบฑเบ
เปเบเบฑเบเบเบฐเปเบซเบเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบญเบเปเบฎเบฑเบเบชเบดเปเบเบเปเปเปเบเบเบตเป:
CXX ;= $(find_program g++ c++ pg++ cxx CC aCC)
# เปเบฅเบทเบญเบเปเบญเบปเบฒ C++ compiler เบเปเบฒเบญเบดเบเบเบตเปเบกเบตเบขเบนเปเปเบ PATH.
# (เปเบเบเบเบฑเบเปเบญเบตเบ, เบเปเบฒเบเปเบฒเบเบเปเปเบเปเบฒเบเบปเบ CXX เบเบฑเบเบซเบกเบปเบ, เบเบตเปเปเบกเปเบ
# เปเบกเปเบเบงเบดเบเบตเบเบตเปเบกเบฑเบเบเบทเบเบเปเบฒเบเบปเบ.)
TCL_INCLUDE ;= -I$(dir_noslash $(findfile tcl.h, \
/usr/local/stow/tcl-8.4.5-nothread/include \
/usr/include/tcl8.4 /usr/include/tcl \
/net/na1/tcl8.4a3/include /net/na1/tcl8.4a3/include))
# $(findfile ) เบเบญเบเบซเบฒ tcl.h เปเบเปเบเปเบฅเบฐเบญเบฑเบเบเบตเปเบฅเบฐเบเบธเปเบงเป
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฅเบฐเบชเบปเปเบเบเบทเบเปเบชเบฑเปเบเบเบฒเบเปเบเบฑเบก. เบเบตเปเปเบกเปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
# เบเปเบฝเบเปเบเบฑเบเบเบปเบงเปเบฅเบทเบญเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเปเบเบเบเบฒเบเบฅเบญเบเปเบญเบปเบฒ
# เบเบทเปเปเบเบฅเป (เบญเบญเบเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต) เปเบฅเบฐเบเปเบฒเบซเบเปเบฒเบเปเบงเบ -I.
%.o : %.cpp
$(CXX) $(CXXFLAGS) $(TCL_INCLUDE) $(input) -o $(output)
TCL_LIB ;= $((first_available
/usr/local/stow/tcl-8.4.5-nothread/lib/libtcl8.4.so
/usr/lib/libtcl8.4.so /usr/lib/libtcl.so
/net/na1/tcl8.4a3/lib/libtcl8.4.a
/net/na1/tcl8.4a3/lib/libtcl8.4.sl))
# เบเบญเบเบซเบฒเบเปเบญเบเบเบตเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ Tcl เบขเบนเป. เบเบตเปเปเบกเปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบขเปเบฒเบเบเบฐเปเบเปเบ
# เบฅเบฐเบเบธเปเบงเปเปเบเบเปเบฒเบชเบฑเปเบเปเบเบทเปเบญเบกเบเปเป:
my_program : *.o
$(CXX) $(CXXFLAGS) $(inputs) -o $(output) $(TCL_LIB)
เปเบเปโเปเบงโเบฅเบฒ เบเบฐเปเบซเบเบ of Perl เบเบญเบ config เบเปเปเบกเบนเบเบเปเบฒเบงเบชเบฒเบ
เปเบเบฑเบเบเบดเบเบเปเบฒเบเปเบเบดเบเบญเบฒเบเบเบฐเบเปเปเบเบฝเบเบเปเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบ
เบฅเบฐเบเบปเบเบเบญเบเบเปเบฒเบ, เปเบเบฑเปเบเบงเปเบฒเบกเบตเบชเบญเบเปเบเบปเปเบฒเบเบฒเบง, เบซเบผเบทเบเปเบฒเบชเบฑเปเบ byte เปเบกเปเบเบซเบเบฑเบ. เปเบเบงเปเบเบเปเปเบเบฒเบก,
perl เปเบเปเบเบดเบเปเบฅเปเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบฅเปเบง, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบเบญเบเบเบญเบเบกเบฑเบ.
script autoconfigure Perl เบเบญเบ Perl เปเบฎเบฑเบเปเบซเปเบเปเปเบกเบนเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบกเบตเบขเบนเปเปเบเบเบเปเบฒเบ
เปเบเป %Config hash. เบเปเปเบกเบต syntax เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบ Perl hash เปเบเบเบเบปเบเปเบ makepp, เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เบซเบผเบธเบเบฅเบปเบเปเบเบปเปเบฒเปเบเปเบ Perl เปเบฅเบฐเบเปเบฒเบเบปเบเบเบปเบงเปเบ scalar, เปเบเบดเปเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเบเบปเบเบเบฒเบ makepp:
perl_begin
# เบเบถเบเปเบญเบปเบฒเบเปเบฒเบญเบญเบเบเบฒเบ hash config.
เปเบเป Config;
$CC = $Config{'cc'}; # C compiler เบเบตเป perl เปเบเป;
$byteorder_flags = "-DBYTEORDER=$Config{'byteorder'}";
$longdouble_defined = $Config{'d_longdbl'} eq 'define';
$CFLAGS_for_shared_libs = $Config{'cccdlflags'};
$LDFLAGS_for_shared_libs = $Config{'ccdlflags'};
perl_end
เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบกเบทเปเบญเบเปเบฒเบเปเบเปเปเบฎเบฑเบ 'เปเบเป Config', เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบชเบฑเปเบ "$(perl)", เปเบเบฑเปเบ:
เบเบตเป:
SHARED_LIB_EXTENSION := $(perl $Config{'dlext'})
เบเบดเบก "perldoc Config" เปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบกเบตเบเปเปเบกเบนเบเปเบเปเบเปเบเบตเปเบกเบตเบเปเบฒเบ %Config hash.
เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบ Perl เปเบกเปเบเบเปเบญเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเปเบฎเบฑเบเบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบเบฐเปเบเบเบเปเบฒเบเบงเบเปเบเบฑเบก, byte
เบเปเบฒเบชเบฑเปเบ, เปเบฅเบฐเบชเบดเปเบเบญเบทเปเบเปเบเบตเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบญเบเบเบฒเบ script config เปเบเบเบเปเบฒเบเบซเบฒเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบชเบฐเบเบฒเบเบเบตเป. เบเบฒเบเบชเปเบงเบเบเบญเบ
เบเปเปเบกเบนเบเบเบญเบเบกเบฑเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเบฐเบเบปเบเบเบปเบงเบเบญเบเบชเบดเปเบเบเปเบฒเบเปเปเบเบฅเบฐเบเบปเบเปเบเบฅเปเบญเบฒเบเบเบฐเบเปเปเปเบกเปเบ
เบเบทเบเบเปเบญเบ. เบเบปเบงเบขเปเบฒเบ, $Config{'cc'} เบซเบกเบฒเบเปเบเบดเบ C compiler เบเบตเป perl เบชเปเบฒเบเบเบถเปเบเบเปเบงเบ,
เปเบเบดเปเบเบญเบฒเบเบเบฐเบเปเปเปเบกเปเบ C compiler เบเบฝเบงเบเบฑเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเป. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบกเบฑเบเบญเบฒเบเบเบฐเบเปเปเบกเบตเบขเบนเป
เปเบเบฅเบฐเบเบปเบเบเบญเบเบเปเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบเปเบฒเบเบญเบฒเบเบเบฐเบเบดเบเบเบฑเปเบ Perl เบเปเบฒเบเบเบธเบเบเบนเป.
เบเปเบฒเปเบเบฐเบเปเบฒ เบชเปเบฒเบฅเบฑเบเบเบฒเบ เบเบฒเบเบเปเบฒเปเบเป เบเบปเบงเปเบเบ
เบเบฒเบเบเบฑเบเบเบนเป เบเบฑเบเบซเบกเบปเบ เปเบ เบเบปเบเปเบงเบฑเปเบ a เปเบเปเบเบญเบ เบเบธเบเบเปเบญเบ
เบเบปเบงเปเบเบเบเบญเบ Makepp เบเปเปเบกเบตเบงเบดเบเบตเปเบเปเบฅเบตเบเปเบเบเบฑเบเบเบธเบเบฑเบเบเบญเบเบเบฒเบเบเบฑเบเบเบนเปเปเบเบฅเปเบเบฑเบเปเบปเบ เบเบปเบเปเบงเบฑเปเบ เบเบตเปเปเบเปเบเบญเบ
เบเปเบฒเบเบปเบ, เปเบเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเปเบงเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบเบซเบเปเบฒเบเบตเป.
เบเบปเบงเบขเปเบฒเบ, เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบกเบตเปเบเบเบเบฒเบเบเบปเบเบชเบญเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเปเบกเบเบนเบเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, เปเบเปเปเบเบปเปเบฒเบเปเปเบกเบต
เบเปเบญเบเบเบฒเบเบฅเบงเบกเปเบญเบปเบฒเปเบเบเบเบฒเบเบเบปเบเบชเบญเบเบขเบนเปเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ. เบเปเบฒเปเบเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฑเบเบซเบกเบปเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ
เบเบฒเบเบเบปเบเบชเบญเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบปเบเปเบงเบฑเปเบเบเบงเบเปเบเบปเบฒเปเบเบฑเปเบเบเบตเป:
libproduction.a: $(filter_out test*, $(wildcard *.o))
เบเบฑเบเบเบฑเบ "$(filter)" เปเบฅเบฐ "$(filter_out)" เปเบเบฑเบเบเบธเบเบเบปเบงเบเบญเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบ.
เบเบธเบเบเบฐเปเบเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฑเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบงเบฒเบกเปเบเบเบเปเบฒเบ. เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
SUBDIRS ;= $(filter_out *test* *$(ARCH)*, $(shell find . -type d -print))
# เบชเบปเปเบเบเบทเบเบเบธเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเบเปเปเบกเบต
# "เบเบปเบเบชเบญเบ" เบซเบผเบท $(ARCH) เปเบเบเบงเบเบกเบฑเบ.
$(filter $(pasubst test_dir/test_%.o, %.o, $(wildcard test_dir/*.o)), \
$(wildcard *.o))
# เบชเบปเปเบเบเบทเบเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเป .o เปเบเบเบฐเบเบธเบเบฑเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ
# test_*.o เปเบเบฅเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ test_dir.
$(filter_out $(patsubst man/man3/%.3, %.o, $(wildcard man/man3/*.3)), \
$(wildcard *.o))
# เบชเบปเปเบเบเบทเบเบฅเบฒเบเบเบทเปเบเบญเบเปเบเบฅเป .o เปเบเบเบฐเบเบธเบเบฑเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเปเปเบกเบตเบซเบเปเบฒเบเบนเปเบกเบท
# เบเบตเปเบกเบตเบเบทเปเปเบเบฅเปเบเบฝเบงเบเบฑเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบญเบ man/man3.
เบเบฒเบเบเปเบฒเปเบเป เปเบเป "$(only_targets )" เบซเบเปเบฒเบเบตเป to เบฅเบปเบเบฅเปเบฒเบ stale .o เปเบ
เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบชเปเบฒเบเปเบเบเบเบฒเบเบซเบผเบทเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบกเบตเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบเปเบเบฑเปเบเบเบตเป:
เปเบเบเบเบฒเบ: *.o
$(CC) $(inputs) -o $(output)
เบชเบปเบกเบกเบธเบเบงเปเบฒเบเบญเบเบเบตเปเปเบเบปเปเบฒเบฅเบถเบเปเบเบฅเปเปเบซเบผเปเบ. เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบฅเบทเบกโเบฅเบปเบโเบเบตเปโเบชเบญเบโเบเปเบญเบโเบเบฑเบโ .o เปเบเปเบก,
เบกเบฑเบเบเบฐเบเบฑเบเบเบปเบเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเปเบกเบตเบเบฒเบเบเบตเปเบเบฐเบชเปเบฒเบเบกเบฑเบเบญเบตเบเบเปเปเปเบ. เปเบ
เปเบเบญเบฐเบเบฒเบเบปเบ, makepp เบญเบฒเบเบเบฐเบฎเบฑเบเบฎเบนเปเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเบปเบเปเบงเบฑเปเบเบกเบฑเบ
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเป wildcard, เปเบเปเปเบเบเบฑเบเบเบธเบเบฑเบ, เบเปเบฒเบเบเปเบญเบเบเบญเบเบกเบฑเบเปเบเบทเปเบญเบเบปเบเปเบงเบฑเปเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบ:
เปเบเบฃเปเบเบฃเบก: $(only_targets *.o)
$(CC) $(inputs) -o $(outputs)
Makepp เบเปเปเบฎเบนเปเบงเบดเบเบตเปเบเบเบตเปเบเบฐเบชเปเบฒเบ stale เปเบเป .o เปเบเบฅเปเปเบเปเบเบฑเบเบเบฑเปเบเปเบเปเปเบเบฅเปเบเบปเปเบเบชเบฐเบเบฑเบเบเบญเบเบกเบฑเบ
เบซเบฒเบเปเบ, เบเบฑเปเบเบเบฑเปเบเบเบฑเบเบเบฑเบ "$(only_targets )" เบเบฐเบเบปเบเปเบงเบฑเปเบเบกเบฑเบเบญเบญเบเบเบฒเบเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช.
เบเปเบฒเปเบเบฐเบเปเบฒ เบชเปเบฒเบฅเบฑเบเบเบฒเบ เบซเบผเบฒเบ เปเบเปเบฅเบเบฐเบเปเบฅเบต
เบซเบเบถเปเบเปเบเปเบซเบเบเบปเบเบเบปเปเบเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบ makepp เปเบกเปเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบฑเบเบเบฒเบเบเบญเบเบซเบผเบฒเบเบเปเบฒเบเบเบฒเบ
เปเบเปเบฅเบเบฐเบเปเบฅเบต. Makepp เบชเบฒเบกเบฒเบเบชเบปเบกเบเบปเบเบเบฒเบเบชเปเบฒเบเบเปเบฒเบชเบฑเปเบเบเบฒเบเบซเบผเบฒเบ makefiles, เบชเบฐเบเบฑเปเบเบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป
เบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบเปเบ makefile เบซเบเบถเปเบเบเบตเปเบเบถเปเบเบเบฑเบเปเบเบฅเปเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบ a
makefile เบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโ.
เปเบกเปเบโเบซเบเบฑเบ to do in เบชเบฐเบเบฒเบเบเบตเป of เบฎเบฝเบเบฎเปเบญเบ เปเบฎเบฑเบเปเบซเป
Makepp เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ recursive make เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบเบเบทเบเปเบเบเปเบญเบ, เปเบเปเบงเปเบฒเบกเบฑเบเปเบกเปเบเปเบเบฐเบเปเบฒเปเบซเปเบชเบนเบ
เบเบตเปเบเปเบฒเบ เบเปเป เปเบเปโเบกเบฑเบ. เบเปเบฒเปเบเบปเปเบฒเบเปเปเบฎเบนเปเบงเปเบฒเบกเบฑเบเปเบกเปเบเบซเบเบฑเบ, เบเบต.
เปเบเบดเปเบ "เบฅเบฐเบเบปเบเบเบตเปเบเบตเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเปเบฒเบเบฑเบเบเบฑเปเบ" เปเบ makepp เบชเปเบฒเบฅเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบ
เปเบเป recursive make, เบซเบผเบทเบญเบทเปเบเปเบเบปเปเบเบซเบฒเบขเบนเปเปเบเปเบงเบฑเบเบชเปเบฒเบฅเบฑเบ "recursive make เบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบ".
เปเบเบเบเบตเปเบเบฐเปเบฎเบฑเบ recursive เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเปเบเบปเปเบฒเบซเบกเบฒเบ "เบเบฑเบเบซเบกเบปเบ" เปเบเบเบธเบ makefile, เบกเบฑเบเปเบกเปเบ
เบเบปเบเบเบฐเบเบดเปเบฅเปเบง เบเปเบฒเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบซเป makepp เบเบดเบเบญเบญเบเบงเปเบฒเปเบเบปเปเบฒเปเบฒเบเปเบเบเบตเปเบเบฐเบเปเบญเบเบชเปเบฒเบ.
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเปเบญเบปเบฒเบเบฑเบเบซเบกเบปเบเบเบญเบเบเปเบฒเบ .o เปเบฅเบฐเปเบเบฅเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฝเบงเบเบฑเบเบเบฑเบ
makefiles, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ makepp เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฐเบเบดเบเบญเบญเบเบงเปเบฒ makefiles เปเบเปเบกเปเบเบเปเบญเบเบเบฒเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ
เบชเบดเปเบเบเบฝเบงเบเบตเปเบเปเบญเบเบเบฒเบเปเบกเปเบเปเบซเปเบกเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเบเบญเบเปเบเบปเปเบฒเปเบฎเบฑเบเปเบซเปเบฅเบฒเบเบเบทเปเปเบเบฅเปเบเบตเปเบเปเบฒเปเบเบฑเบ
เบชเปเบฒเบฅเบฑเบเบเบฑเปเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบชเบธเบเบเปเบฒเบ. เปเบเบดเปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเบฅเบธเปเบกเบเบตเป.
เบซเบเบถเปเบ makefile เบชเปเบฒเบฅเบฑเบเบเบฒเบ เปเบเปเบฅเบฐเบเบปเบ เปเบเปเบฅเบเบฐเบเปเบฅเบต: เบเบฑเบ implicit loading
เบงเบดเบเบตเบเบปเปเบงเปเบเบเบตเปเบชเบธเบเปเบเบเบฒเบเบเบฑเบเบเบฒเบเบซเบผเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบกเปเบเบเบฒเบเปเบชเป makefile เปเบเปเบเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบต
เปเบเบดเปเบเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบเบเบธเบเบขเปเบฒเบเปเบ เบซเบผเบทเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเปเบ. เบเปเบฒเปเบเบปเปเบฒเปเบชเป .o เปเบเบฅเปเปเบ
เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฝเบงเบเบฑเบเบเบฑเบเปเบเบฅเปเบเบปเปเบเบชเบฐเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเปเบซเบผเบ implicit (เปเบเบดเปเบ "เบเบฒเบเปเบซเบผเบ implicit" เปเบ
makepp_build_algorithm) เบเบฐเบเบญเบเบซเบฒ makefiles เบเบฑเบเปเบปเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเปเบฒเปเบเบปเปเบฒเปเบชเปเบเบญเบเปเบเบปเปเบฒ .o
เปเบเบฅเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ (เบเบปเบงเบขเปเบฒเบ, เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเบเบถเปเบเบเบฑเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ), เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบ
เบญเบฒเบเบเบฐเบเปเบญเบเปเบเปเปเบซเบฅเบ makefiles เบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบซเบกเบปเบเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ "load_makefile".
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบ makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเบชเปเบฒเบฅเบฑเบเบฅเปเบฒเบเบฑเบเบเบฑเปเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเปเบเบฒเบเปเบซเบผเบ implicit
เปเบเบทเปเบญโเบชเปเบฒเบโเปเบเบโเบเบฒเบโเบเบตเปโเบเบฐโเบเบญเบโเบเปเบงเบโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเปเบเปเบโเบเบฑเบโเบเปเบฒโเบเบงเบโเบซเบผเบฒเบ (เปเบเปโเปเบเบดเปเบ "เบเปเบฒเบโเบเปเปโเบเปเบญเบโเบเบฒเบ a
เบซเปเบชเบฐเบซเบกเบธเบ?" เปเบ makepp_cookbook, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฒเบเบชเปเบฒเบเปเบเบเบเบฒเบเบญเบญเบเบเบฒเบเบเปเปเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบฎเปเบงเบกเบเบฑเบ
เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบต):
# makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ:
program : main.o **/*.la # เบฅเบดเปเบเปเบเบซเปเบญเบเบชเบฐเปเบธเบเบเบตเปเปเบเปเบเบเบฑเบเบเบฒเบเบเบธเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ.
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(inputs) -o $(output) $(LIBS)
เบเบฑเปเบเปเบกเปเบเปเบเบทเบญเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบ makefile เบฅเบฐเบเบฑเบเปเบเบดเบ. เปเบเปเบเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ, เบเปเบฒเบ
เบญเบฒเบเบเบฐเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
# Makefile เปเบเปเบเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ:
include standard_defs.mk # เบเบปเปเบเบซเบฒ ., .. , ../ .., เปเบฅเบฐเบญเบทเปเบเปเบเบปเบเบเปเบงเบฒเบกเบฑเบ
# เบเบญเบเบซเบฒเปเบเบฅเปเบเบตเปเบฅเบฐเบเบธเปเบงเป.
# เบเบปเบเปเบฅเบตเบเบเบณเบเบดเบเบฒเบกเบเบปเบงเปเบเบเบฒเบเบญเบฑเบเบขเบนเปเบเปเบญเบเบเบตเป
SPECIAL_FLAGS := -do_something_different
เปเบเปเบฅเบฐ makefile เบญเบฒเบเบเบฐเบเบทเบเบฑเบเบซเบผเบฒเบเบเปเบฒเบเปเบฒเบชเบฑเปเบเปเบเบทเปเบญเบชเปเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบ
เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบทเบเบฑเบ.
เปเบโเบเบตเปโเบชเบธเบโ, เบเปเบฒเบโเบเบฐโเปเบชเปโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโเปเบเบปเปเบฒโเปเบโเปเบโ standard_defs.mk เปเบเบฅเป (เปเบเบดเปเบเบญเบฒเบเบเบฐเปเบเบฑเบ
เบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ):
# เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบเบปเปเบงเปเบเปเบฅเบฐเบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเบเบซเบกเบปเบ.
CFLAGS := -g -O2
INCLUDE_DIR := $(find_upwards เบฅเบงเบกเบกเบต)
# เบเบปเปเบเบซเบฒ ., .. , ../ .., เปเบฅเบฐเบญเบทเปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบฅเปเบซเบผเบท
# directory เปเบญเบตเปเบเบงเปเบฒเบเบฐเบเบญเบเบกเบต, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเปเบชเป
# เปเบเบฅเปเบเบฑเบเปเบปเบเบเบญเบเปเบเบปเปเบฒเบกเบตเบขเบนเปเปเบเบเบฑเปเบ, เบเบตเปเบเบฐ
# เบเบญเบเบซเบฒเปเบเบปเบฒเปเบเบปเปเบฒ.
เบฅเบงเบกเบกเบต := -I$(INCLUDE_DIR)
%.lo : %.c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(input) -o $(output)
lib$(relative_to .,..).la: $(only_targets *.lo)
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(output) $(inputs)
# $(relative_to.,..) เบชเบปเปเบเบเบทเบเบเบทเปเบเบญเบเบเบฐเบเบธเบเบฑเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบฅเบฐเบเบฑเบเปเบเบดเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ. เบเบฑเปเบเบเบฑเปเบเบเปเบฒ makefile เบเบตเปเปเบกเปเบ xyz / Makefile,
# เบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเบชเปเบฒเบ xyz/libxyz.la.
# เปเบเบตเบเปเบเปเบชเบฒเบเบฒเบฅเบฐเบเบฐเบเบฐเบเบญเบเบกเบตเปเบเบฅเปเปเบเบปเปเบฒเปเบเปเบเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเบเบฐเบเบญเบเบกเบตเปเบเปเบฅเบเบฐเบเปเบฅเบต:
$(INCLUDE_DIR)/public_%.h : public_%.h
:build_check symlnk
&ln -fr $(input) $(output)
เบซเบเบถเปเบ makefile เบชเปเบฒเบฅเบฑเบเบเบฒเบ เปเบเปเบฅเบฐเบเบปเบ เปเบเปเบฅเบเบฐเบเปเบฅเบต: เบขเปเบฒเบเบเบฑเบเปเบเบ loading
เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเปเบญเบปเบฒโเบเบฑเบโเบซเบกเบปเบโเบเบญเบโเบเปเบฒเบโ .o เปเบเบฅเปเปเบเบปเปเบฒเปเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเบเบถเปเบเบเบฑเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
เบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบเบเบตเปเบเบงเบเบเบฐเบเบทเบเบเบฑเบเปเบเบเปเบซเปเปเบเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
# makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ:
MAKEFILES := $(wildcard **/Makeppfile) # เบฅเบฒเบเบเบฒเบเบเปเบญเบเบเปเบญเบเบเบฑเบเปเบปเบเปเบเบทเปเบญ
# เปเบญเบปเบฒ makefiles เบเบฒเบ.
load_makefile $(MAKEFILES) # เปเบซเบผเบเบเบงเบเบกเบฑเบเบเบฑเบเปเบปเบเปเบ.
include standard_defs.mk # Get compile command for main.o.
เปเบเบฃเปเบเบฃเบก : $(ARCH)/main.o */**/$(ARCH)/*.la
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(inputs) -o $(output) $(LIBS)
# */**/$(ARCH) เบเปเปเบฅเบงเบกเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ
# $(ARCH), เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบชเปเบฒเบ
# เบซเปเบญเบเบชเบฐเปเบธเบเบเบตเปเปเบเปเบฎเปเบงเบกเบเบฑเบ.
makefile เปเบเปโเบฅเบฐโเบเบปเบโเบเบฐโเบเบทโเบเบฑเบโเบเบฑเบโเบเบตเปโเบเปเบฒเบโเบกเบฒโ:
# Makefile เปเบเปเบเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ:
เบฅเบงเบกเปเบญเบปเบฒ standard_defs.mk
# ... เปเบเบเบเบปเบงเบเปเบฝเบเปเบเปเบเบตเปเบเบตเป
เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, standard_defs.mk เบเบฐโเบกเบตโเบเบฒเบโเบชเบดเปเบโเบเบฒเบโเบขเปเบฒเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
# เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเบงเปเบเบเบปเปเบงเปเบเปเบฅเบฐเบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฑเบเบซเบกเบปเบ.
ARCH ;= $(shell uname -s)-$(shell uname -m)-$(shell uname -r)
# เบเบฒเบเบเบฑเปเบเบเบปเบเปเบเปเบเบฝเบเปเบเป $ (shell uname -m), เปเบเป
# เบเบตเปเบเบฐเบเบทเบเบฑเบเบชเปเบฒเบฅเบฑเบ FreeBSD เปเบฅเบฐ Linux
# เปเบเบฑเบ x86. The -r เบเปเปเบกเบตเบเบฐเปเบซเบเบเปเบเปเปเปเบ Linux,
# เปเบเปเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบ OSes เบญเบทเปเบเป: binaries เบชเปเบฒเบฅเบฑเบ
# เบเบปเบเบเบฐเบเบดเปเบฅเปเบง SunOS 5.8 เบเบฐเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบ SunOS 5.7.
&mkdir -p $(ARCH) # เปเบซเปเปเบเปเปเบเบงเปเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบปเบเบเบฐเบฅเบดเบเบกเบตเบขเบนเป.
CFLAGS := -g -O2
INCLUDE_DIR := $(find_upwards เบฅเบงเบกเบกเบต)
# เบเบปเปเบเบซเบฒ ., .. , ../ .., เปเบฅเบฐเบญเบทเปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบฅเปเบซเบผเบท
# directory เปเบญเบตเปเบเบงเปเบฒเบเบฐเบเบญเบเบกเบต, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเปเบชเป
# เปเบเบฅเปเบเบฑเบเปเบปเบเบเบญเบเปเบเบปเปเบฒเบกเบตเบขเบนเปเปเบเบเบฑเปเบ, เบเบตเปเบเบฐ
# เบเบญเบเบซเบฒเปเบเบปเบฒเปเบเบปเปเบฒ.
เบฅเบงเบกเบกเบต := -I$(INCLUDE_DIR)
$(ARCH)/%.lo : %.c
$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) -c $(input) -o $(output)
$(ARCH)/ lib$(relative_to .,..).la: $(only_targets *.lo)
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(output) $(inputs)
# $(relative_to.,..) เบชเบปเปเบเบเบทเบเบเบทเปเบเบญเบเบเบฐเบเบธเบเบฑเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบฅเบฐเบเบฑเบเปเบเบดเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ. เบเบฑเปเบเบเบฑเปเบเบเปเบฒ makefile เบเบตเปเปเบกเปเบ xyz / Makefile,
# เบเบปเบเบฅเบฐเบเบฝเบเบเบตเปเบเบฐเบชเปเบฒเบ xyz/$(ARCH)/libxyz.la.
# เบเบฑเบเบฅเบญเบเบชเบฒเบเบฒเบฅเบฐเบเบฐเบฅเบงเบกเปเบเบฅเปเปเบเบปเปเบฒเปเบเปเบเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเบเบฐเบเบญเบเบกเบตเปเบเปเบฅเบเบฐเบเปเบฅเบต:
$(INCLUDE_DIR)/public_%.h : public_%.h
&cp $(input) $(output)
เบญเบฑเบเบเบฐเปเบเบกเบฑเบ เปเบฎเบฑเบเปเบซเป เปเบเป makefiles
เบเปเบฒ makefiles เบเบญเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบเปเบฒเบเบเบทเบเบฑเบเบเบตเปเบชเบธเบ (เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ), เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบ Makepp
เปเบเบทเปเบญเบชเปเบฒเบเบเบงเบเบกเบฑเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบเบงเบเปเบเบปเบฒเบเปเปเบกเบต. เบเบฝเบโเปเบเปโเปเบเบตเปเบกโเบเบฒเบโเบเปเปโเปเบโเบเบตเปโเปเบโเบฅเบฐโเบเบฑเบโเบชเบนเบโเบชเบธเบโเบเบญเบโเบเปเบฒเบโ
makefile:
SUBDIRS := $(filter_out unwanted_dir1 unwanted_dir2, $(wildcard */**))
$(foreach)/Makeppfile: : foreach $(SUBDIRS)
&echo "include standard_defs.mk" -o $(output)
&echo "_include additional_defs.mk" -o >>$(output)
# เบเปเบฒเบกเบตเปเบเบฅเปเปเบเบตเปเบกเปเบเบตเบก_defs.mk, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ
# เบกเบฑเบเบเบฐเบเบทเบเบฅเบงเบก, เปเบเปเบเปเบฒเบกเบฑเบเบเปเปเบกเบต,
# เบเบณเบเบฐเปเบซเบผเบเบเบฒเบ _include เบเบฐเบเบทเบเบฅเบฐเปเบฅเบตเบ.
เปเบเบเบฑเบเบเบธเบเบฑเบ makefiles เบเบปเบงเปเบญเบเบเบฐเบเบทเบเบชเปเบฒเบเบเบทเปเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
เบซเบเบถเปเบ makefile เบเบฝเบเปเบเป at เปเบเป top เบฅเบฐเบเบฑเบ
เบเปเบฒ makefiles เบเบฑเบเปเบปเบเบเบญเบเปเบเบปเปเบฒเบเบทเบเบฑเบ, เปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเบฒเบกเบงเปเบฒ: เปเบเบฑเบเบซเบเบฑเบเบเปเบญเบเบเบถเปเบเบเปเบญเบเบกเบต makefile เปเบเปเบฅเบฐเบญเบฑเบ
เบฅเบฐเบเบฑเบ? เปเบเบฑเบเบซเบเบฑเบเบเบถเปเบเบเปเปเปเบญเบปเบฒเบชเบดเปเบเบเบฑเปเบเปเบเบปเปเบฒเปเบเปเบ makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ?
เปเบกเปเบเปเบฅเปเบง, เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป. เบเปเปเปเบชเบเบเบปเปเบเบเปเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเบฐเบเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเบฅเบฐเบเบธ
เบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบชเปเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐ subdirectory. เบเปเปโเปเบชเบโเบเบตเปโเบชเบญเบโเปเบกเปเบโเบงเปเบฒโเบเบญเบโเบเปเบฒเบโ
makefile เบญเบฒเบเบเบฐเบญเปเบฒเบเบเบฒเบเบเบงเปเบฒ.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบเบฝเบเปเบเปเบงเปเบฒ:
# makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบเบชเปเบฒเบฅเบฑเบเบฅเปเบฒเบเบฑเบเบเบฑเปเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบต. เบชเปเบฒเบเปเบเบเบเบฒเบ
# เบญเบญเบเบเบฒเบเบเบธเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเปเบเปเบฎเปเบงเบกเบเบฑเบเปเบเบฑเบเบเบปเบงเบขเปเบฒเบ. (เปเบเบดเปเบเบเปเบฒเปเบเบทเบญเบเบเปเบฒเบเปเบเบดเบ
# เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเปเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบเบเปเบเบตเปเบกเบซเบผเบทเบเบฒเบเบญเบฑเบ
# เบงเบดเบเบตเบเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบฎเปเบงเบกเบเบฑเบ.)
makepp_percent_subdirs := 1 # เบญเบฐเบเบธเบเบฒเบเปเบซเป % เบเบปเบเบเบฑเบเบซเบผเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต.
SUBDIRS := $(filter_out *CVS* other-unwanted_dirs $(wildcard **))
CFLAGS := -g -O2
เบฅเบงเบกเบกเบต := -Includes
%.lo: %.c
$(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(CFLAGS) -c $(input) -o $(output)
$(foreach)/ lib$(notdir $(foreach)).la: $(foreach)/*.lo : foreach $(SUBDIRS)
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(output) $(inputs)
# เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบชเปเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฑเบเบซเบกเบปเบ.
เปเบเบฃเปเบเบฃเบก : main.o **/*.la
$(LIBTOOL) --mode=link $(CC) $(CFLAGS) -o $(output) $(inputs)
include/$(notdir $(foreach)): $(foreach): foreach **/public_*.h
&cp $(input) $(output)
# เบเบปเบเบฅเบฐเบเบฝเบเบเบปเบงเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบฅเบญเบเบชเบฒเบเบฒเบฅเบฐเบเบฐ
# เปเบเบฅเป .h เบเบตเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเปเปเบเบเปเบญเบเบเบตเปเบเบทเบเบเปเบญเบ.
A เปเบฎเบฑเบเบเบงเบฒเบกเบชเบฐเบญเบฒเบ เปเบเบปเปเบฒโเบซเบกเบฒเบ
makefiles เปเบเบเบเบฑเปเบเปเบเบตเบกเบเบฐเบเบญเบเบเปเบงเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ, เปเบเบดเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบญเบปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเปเบเบฑเบ
เบชเปเบฒเบ. เบกเบตเบชเบฒเบกเปเบซเบเบเบปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเปเปเบเบงเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเบฑเบ makepp:
1. Makepp เปเบเบชเบนเปเบเบงเบฒเบกเบเบฒเบงเบซเบผเบฒเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบชเปเบฒเบเบเบตเปเบเบทเบเบเปเบญเบ. เบเบฑเปเบโเบเบฑเปเบโเบเบนเปโเบเบตเปโเบชเบดเปเบโเบซเบงเบฑเบ "เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเปเบเป
เบฎเบนเปเบงเปเบฒเปเบกเปเบเบซเบเบฑเบเบเบดเบ", เบเบฒเบเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบ scratch เปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบกเบฒ.
2. เบเบฒเบเบเบฑเปเบเบเบปเบเปเบฎเบปเบฒเบเบฐเบเบฐเบเบฒเบเบฒเบกเบเบฐเบขเบฑเบเปเบงเบฅเบฒเปเบเบเบเบฒเบเปเบฎเบฑเบเบชเบญเบเบขเปเบฒเบเบเบตเปเบเบฑเบเบเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ:
"เปเบฎเบฑเบเปเบซเปเบชเบฐเบญเบฒเบเบเบฑเบเบซเบกเบปเบ". เบเบตเปเบชเบฒเบกเบฒเบเบชเบฑเบเบชเบปเบเบฅเบฐเบเบปเบ wildcard smart เบเบญเบ makepp, เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบฐ
เบเปเบฒเบญเบดเบเปเบเปเบฎเบฑเบเบเบงเบฒเบกเบเบดเบเบเปเบญเบเบเบตเปเบเบฐเปเบฎเบฑเบเบซเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบชเบฐเบญเบฒเบ, เปเบเบดเปเบเปเบฎเบฑเบ
เบขเปเบฒเบเบญเบ makepp เบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบซเบเบฑเบ (เปเบเปเบเบดเบเปเบฅเปเบงเบกเบฑเบเปเบฎเบฑเบเบเปเปเปเบเป, เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบปเบเปเบฅเบตเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ - the
เบเบปเบเบเบฑเบเบเปเบฒเบกเบเบฑเบเบชเบดเปเบเบเบตเปเปเบเบทเปเบญเบเบกเบทเบชเปเบฒเบเปเบกเปเบเบชเปเบฒเบฅเบฑเบ). เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฒ "เบเบฑเบเบซเบกเบปเบ", เปเบเปเปเบเบฅเปเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก,
เบเปเบญเบเบเบตเปเบกเบต, เบซเบฒเบเปเบเบขเปเบฒเบเบฅเบถเบเบฅเบฑเบ.
3. เบกเบตเบเปเบฒเบชเบฑเปเบ "makeppclean", เปเบเบดเปเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบ, เปเบฅเบฐเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบปเบเบฎเบฑเบเบชเบฒเบเบฒเบเบเบฐเบซเบงเบฑเบเบชเบฒเบเบเบตเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบญเบเบเปเบฒเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเปเบฝเบงเบเบฑเบ
เบงเบดเบเบตเบเบฒเบ makepp เปเบฎเบฑเบเบงเบฝเบ: เปเบเบปเปเบฒเบซเบกเบฒเบ phony เปเบญเบตเปเบเบงเปเบฒ "เบชเบฐเบญเบฒเบ" เปเบกเปเบเบเบฝเบเปเบเปเบเบทเปเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบญเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบฐ
เปเบญเบปเบฒเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบตเปเบกเบฒเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบฐเบฅเบดเบ. เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบเปเบเบดเปเบ
เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -fm $(wildcard *.o .makepp_log)
# -m เปเบฅเบฐ .makepp_log เบเปเบฒเบเบฑเบเบเบตเปเปเบซเบเบทเปเบญเบเบฑเบเปเบปเบเบเบญเบ makepp.
เปเบเบโเบเบตเปโเบเบฐโเบฅเบฒเบโเบเบทเปโเปเบเบฅโเปโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบฅเบถเบโเบขเปเบฒเบโเบเบฑเบโเปเบเบโ, เบเปเบฒเบโเบเบฑเบโเบชเบฒโเบกเบฒเบโเบเบญเบ makepp เบเบฑเบโ
เปเบญเบปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเบกเบฑเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบ, เปเบเบฑเปเบเบเบตเป:
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -fm .makepp_log $(only_targets *)
เบเบตเปเบกเบตเบเบฐเปเบเบเบเบตเปเบงเปเบฒเบเปเบฒเปเบเบฅเปเปเบเปเบเบญเบเปเบซเบผเปเบเบเบญเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฒเบเปเบเบฅเปเบญเบทเปเบเป,
เบเบงเบเบกเบฑเบเบเบฐเบเบทเบเบฅเบถเบเบเบทเบเบฑเบ; เปเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ, stale .o เปเบเบฅเป (เปเบเบฅเปเบเบตเปเปเบเบตเบเปเบเบฑเบ
buildable เปเบเปโเบงเปเบฒโเปเบเบฅโเปโเบเบตเปโเบกเบฒโเบเบญเบโเบเบปเบโเปเบเปโเบเบทเบโเบฅเบปเบโเบญเบญเบโเบเบฑเบโเบเบฑเปเบโเปเบเปโ) เบเบฐโเบเปเปโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบฅเบถเบโ.
เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบกเบตโเบเบฒเบโเบเปเปโเบชเปเบฒเบโเบเบตเปโเบเปเบฝเบงโเบเปเบญเบโเบเบฑเบ makefiles เปเบโเบฅเบฐโเบเบปเบโเบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบโเบซเบผเบฒเบโ, เบเบฒเบโเปเบเบดเบโเบเบญเบโเบเปเบฒเบโ.
makefile เบฅเบฐเบเบฑเบเบญเบฒเบเบเบฐเบญเปเบฒเบเปเบเบดเบเปเบเบปเปเบฒเบซเบกเบฒเบ "เบชเบฐเบญเบฒเบ" (เบซเบผเบทเปเบเบปเปเบฒเบซเบกเบฒเบ phony เบญเบทเปเบเป) เปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ
makefile:
# makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ
SUBDIRS := sub1 sub2
# เบชเปเบฒเบเบเบปเบเบฅเบฐเบเบฝเบเบขเบนเปเบเบตเปเบเบตเป
# เบญเบฐเบเบฒเปเบกเบซเบผเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบ:
$(phony clean): $(SUBDIRS)/เบชเบฐเบญเบฒเบ
&rm -fm .makepp_log $(only_targets *)
เบญเบตเบเบเบฒเบเปเบฅเบทเบญเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบงเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบ "เบชเบฐเบญเบฒเบ" เบเบญเบเบเปเบฒเบเปเบ makefile เบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ, เปเบฅเบฐเบกเบตเบกเบฑเบ
เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบต, เปเบเบฑเปเบเบเบตเป:
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -fm $(เบเบฝเบ_เปเบเบปเปเบฒเปเบฒเบ **/*)
เบเบฒเบเบเปเบฒเปเบเป Qt เบเบญเบ เบก เปเบเปเบเบเปเบเบตเบเปเบญเบ
เบเบปเบงเบขเปเบฒเบเบเบตเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ makefile เบชเปเบฒเบฅเบฑเบเบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบเปเบฒเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ Qt GUI เบเบญเบ Nokia (เปเบเบดเปเบ
<http://qt.nokia.com>). เบชเบดเปเบเบเบฝเบงเบเบตเปเบเบดเบเบเบปเบเบเบฐเบเบดเปเบฅเบฑเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเปเบกเปเบเปเบเบปเปเบฒ
เบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบ preprocessor เบเบตเปเปเบญเบตเปเบเบงเปเบฒ "moc" เปเบเปเบเบฅเป ".h" เบชเปเบงเบเปเบซเบเปเบเบตเปเบกเบตเบเปเบฒเบเบดเบเบฒเบก widget,
เปเบเปเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเปเบฅเปเบ "moc" เปเบเปเบเบฅเป ".h" เปเบเปเบเปเบเบฒเบกเบเบตเปเบเปเปเปเบเปเปเบเปเบกเบฒเปเบเบฃ "Q_OBJECT".
เบญเบฑเบเบเบฐเปเบเบกเบฑเบ เบเบฒเบ เบเบณ เบเบปเบ เบเบตเป เปเบ เบเปเบญเบเบเบฒเบ เบก เปเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบ, เปเบเปเบเบญเบ, เบเบฝเบเปเบเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบซเบกเบปเบเบเบญเบเปเบเบฅเป ".h" เบเบตเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบต "moc" เบเปเบฒเปเบเบตเบเบเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบฒ widget เปเบซเบกเปเบขเปเบฒเบเปเบงเบงเบฒ, เบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเบชเบดเปเบเบฅเบปเบเบเบงเบ
เบชเบทเบเบเปเปเบเบฑเบเบเบธเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเปเบ makefile. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฐเบกเบฒเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบฅเบฒเบเบเบทเป moc เปเบเป
เปเบกเบเบนเบเบขเปเบฒเบเบเบฑเบเปเบเบเบเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
MOC := $(QTDIR)/bin/moc
เปเบกเบเบนเบ := เปเบกเบเบนเบเปเบเบเปเปเบเบฒเบกเบเบตเปเปเบเบปเปเบฒเบกเบตเบขเบนเปเปเบเปเบเบผเปเบเบผเบกเบเบญเบเปเบเบปเปเบฒ
MOC_MODULES := $(patsubst %.h, moc_%, $(&grep -l /Q_OBJECT/ *.h))
# เบชเบฐเปเบเบเปเบเบฅเป .h เบเบฑเบเปเบปเบเบชเบณเบฅเบฑเบ Q_OBJECT macro.
my_program: $(MODULES).o $(MOC_MODULES).o
$(CXX) $(inputs) -o $(output)
moc_%.cxx: %.h # เปเบฎเบฑเบเปเบซเปเปเบเบฅเป moc เบเบฒเบเปเบเบฅเป .h.
$(MOC) $(input) -o $(output)
%.o: %.cxx
$(CXX) $(CXXFLAGS) -c $(input) -o $(output)
เบงเบดเบเบตเบเบตเปเบชเบฐเปเบเบเปเบเปเบฅเบฐเบญเบฑเบเบเบญเบเปเบเบปเปเบฒ .h เปเบเบฅเปเบเบธเบเบเบฑเปเบเบเบตเป makepp เบเบทเบเปเบฅเปเบ, เบเบญเบเบซเบฒ
"Q_OBJECT" เบกเบฐเบซเบฒเบเบฒเบ. เบเบฑเบเบเบทเบงเปเบฒเปเบเบ, เปเบเปเบกเบฑเบเบญเบฒเบเบเบฐเปเบเปเปเบงเบฅเบฒเบเปเปเบเบปเบ. (เปเบเป .h
เปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบฐเบเปเบญเบเบเบทเบเปเบซเบฅเบเบเบฒเบเปเบเปเบเบขเปเบฒเบเปเบเบเปเปเบเบฒเบกเปเบเบเบเบฐเบเบงเบเบเบฒเบเบฅเบงเบเบฅเบงเบก, เบเบฑเปเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบฐ
เบเบทเบเปเบเบฑเบเปเบงเป.)
#include เปเบเป .moc เปเบญเบเบฐเบชเบฒเบ
เบงเบดเบเบตเบเบฒเบเบญเบทเปเบเปเบกเปเบเปเบเบทเปเบญ "#include" เบเบปเบเบเบฐเบฅเบดเบเบเบฒเบ preprocessor "moc" เปเบ widget เบเบญเบเบเปเบฒเบ.
เปเบญเบเบฐเบชเบฒเบเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบ. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบทเปเบเปเบฒเบเบตเปเบเบฐเบเบฝเบ "#include", เปเบเปเบกเบฑเบเบกเบต
เบเบฐเปเบซเบเบเบเบตเปเบกเบตเปเบกเบเบนเบเบซเบเปเบญเบเบเบตเปเบเบฐเบฅเบงเบเบฅเบงเบก, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเปเบงเบเบถเปเบ.
(เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก C ++ เบชเปเบงเบเปเบซเบเป, เปเบงเบฅเบฒเบชเปเบงเบเปเบซเบเปเปเบเปเปเบงเบฅเบฒเปเบเบเบฒเบเบญเปเบฒเบเปเบเบฅเป header, เปเบฅเบฐ
เบเบปเบเบเบฐเบฅเบดเบเบเบฒเบเปเบเปเบเบเปเบเบต preprocessor เบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฐเบเบญเบเบกเบตเปเบเบฅเปเปเบเบทเบญเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเปเบเบปเปเบฒเบเบฑเบ widget เบเบญเบเบเปเบฒเบ
เปเบฅเปเบง.) เบเบปเบงเบขเปเบฒเบ:
// my_widget.h
class MyWidget : public QWidget {
Q_OBJECT
//...
}
// my_widget.cpp
#เบฅเบงเบกเบเบฑเบ "my_widget.h"
#include "my_widget.moc" // my_widget.moc เปเบกเปเบเบเบปเบเบเบฐเบฅเบดเบเบเบฒเบ
// moc preprocessor.
// เบชเบดเปเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบญเบทเปเบเปเบขเบนเปเบเบตเปเบเบตเป.
MyWidget::MyWidget(QWidget * parent, const char * name):
QWidget(เบเปเปเปเบกเป, เบเบทเป)
{
//...
}
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเปเบ makefile เบเบญเบเบเปเบฒเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเปเบเบฅเป ".moc", เบเบฑเบเบซเบกเบปเบเปเบเบฑเปเบเบเบตเป:
MOC := $(QTDIR)/bin/moc
# เบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบชเปเบฒเบเปเบเบฅเป .moc:
%.moc: %.h
$(MOC) $(input) -o $(output)
Makepp เบกเบตเบเบงเบฒเบกเบชเบฐเบซเบผเบฒเบเบเปเบเบตเปเบเบฐเบฎเบนเปเบงเปเบฒเบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ "my_widget.moc" เบเปเบฒเบกเบฑเบเบเปเปเบกเบต
เบกเบตเบขเบนเปเปเบฅเปเบง, เบซเบผเบทเบเปเบฒเบกเบฑเบเบฅเปเบฒเบชเบฐเปเบซเบก.
เบงเบดเบเบตเบเบตเบชเบญเบเบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเปเบญเบเปเบเปเปเบฅเบทเปเบญเบเปเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบฅเบฑเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบ.
เบเบฒเบเบเบปเบเปเบเบ เบชเปเบฒเบฅเบฑเบเบเบฒเบ เบเปเปเปเบซเบฑเบเปเบเปเบเบปเบง เปเบฎเบฑเบเปเบซเป เบชเปเบฒเบเบงเบ
MAKECMDGOALS
เบเบฒเบเบเบฑเปเบเบเบปเบเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเปเบ makefile เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบถเปเบเบเบฑเบเบชเบดเปเบเบเบตเปเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบเปเบฒเบฅเบฑเบเบชเปเบฒเบ,
เบเบฒเบเบเปเบฒเปเบเปเบเบปเบงเปเบเบเบดเปเบชเบ "MAKECMDGOALS". เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบฑเปเบเบเบปเบเบซเบเบถเปเบเปเบซเบฑเบเบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบ
เบเบตเป:
ifneq ($(เบเบฒเบเบเบฐเบฅเบดเบเบเบฒเบเบเบฑเปเบเบเบญเบ, $(MAKECMDGOALS)),)
CFLAGS := -O2
เบญเบทเปเบ
CFLAGS := -g
เบชเบดเปเบเบชเบธเบ
เบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบตเบเบฑเบ makepp. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบฐเบเปเบฒเปเบซเปเบเปเปเปเบเป "MAKEMDGOALS" เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบง
เบเปเบฅเบฐเบเบต (เปเบฅเบฐ GNU เบเปเปเปเบฎเบฑเบเบเบนเปเบกเบท). เบเปเบฒเบเบเปเบฒเบฅเบฑเบเบเบตเบเบงเปเบฒเบเบฒเบเบงเบฒเบ optimized เบเบญเบเบเปเบฒเบเปเบฅเบฐ
debug-compiled .o เปเบเบฅเปเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบเบเปเบฒเบเบซเบฒเบ, เบซเบผเบทเปเบซเปเบเบงเบเปเบเบปเบฒเบกเบตเบเปเบฒเบเปเบฒเบซเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบท
suffixes, เบซเบผเบทเบเบฒเบเบเปเบฒเปเบเป repositories, เปเบเบทเปเบญเบฎเบฑเบเบชเบฒเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบเบเปเบฒเบเบซเบฒเบ.
เบญเบฒเบเบเบฐเปเบเบฑเบเปเบงเบฅเบฒเบเบฝเบงเบเบตเปเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบญเปเบฒเบเบญเบตเบ "MAKECMDGOALS" เปเบกเปเบเบเปเบฒเบกเบฑเบ
เปเบเปเปเบงเบฅเบฒเบเบปเบเปเบเบเบฒเบเปเบซเบผเบ makefiles เบเบญเบเบเปเบฒเบ, เปเบฅเบฐเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบ "เบชเบฐเบญเบฒเบ" เปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเปเบฒเบ
(เปเบเปเบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบชเบฐเบญเบฒเบ). เบเบปเบโเบเบปเบงโเบขเปเบฒเบ,
ifneq ($(MAKECMDGOALS),เบชเบฐเบญเบฒเบ)
load_makefile $(wildcard **/Makeppfile)
เบญเบทเปเบ
no_implicit_load . # เบเปเบญเบเบเบฑเบเบเบฒเบเปเบซเบผเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบ makefiles เบญเบทเปเบเป.
เบชเบดเปเบเบชเบธเบ
$(เบฅเปเบฒเบโเบเบดเบโเบเบฒเบ):
&rm -f $(wildcard **/*.o)
เบเบฐเบเบปเบเบเบปเบง เปเบฎเบฑเบเปเบซเป to เบเบฒเบเบเปเปเบชเปเบฒเบ in เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ เปเบเปเบฅเบเบฐเบเปเบฅเบต
เปเบเบดเปเบ "เบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบซเบผเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต" เปเบ makepp_cookbook.
เบเบฐเบเบปเบเบเบปเบง เปเบฎเบฑเบเปเบซเป to เบเบฒเบเบเปเบฝเบเปเบเบ เบกเบนเบเบเปเบฒ of a เบเบปเบงเปเบ
เบเบฒเบ makefiles reinvoke เบเบปเบงเปเบญเบเบเปเบงเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบเบเบปเบงเปเบ, เปเบเบฑเปเบ: debug
เปเบเบปเปเบฒเบซเบกเบฒเบเปเบเบเบดเปเบ makefile เบเปเปเปเบเบเบตเป
.PHONY: เบเบตเบเบฑเบเบเบฑเบเปเบปเบ
เบเบฑเบเปเบซเปเปเปเบฒเบฐเบชเบปเบก:
$(MAKE) เปเบเบฃเปเบเบฃเบก CFLAGS=-O2
เบเบตเบเบฑเบ:
$(MAKE) เปเบเบฃเปเบเบฃเบก CFLAGS=-g
เปเบเบเบเบฒเบ: ao bo
$(CC) $(CFLAGS) $^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
เบเปเบฒเบเบนเปเปเบเปเบเบดเบก "เปเบฎเบฑเบเบเบฒเบเบเบตเบเบฑเบ", เบกเบฑเบเบเบฐเบชเปเบฒเบเปเบเบเบเบฒเบเปเบเปเบซเบกเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบฒเบเปเบเบตเบเปเบเปเบเบฒเบเบเบตเบเบฑเบ
เปเบเบเบเบตเปเบเบฐเบกเบตเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบ.
เบงเบดเบเบตเบเบฒเบเบเบตเปเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเบกเบฑเบเปเบกเปเบเบเบฒเบเบชเปเบฒเบเบชเบญเบเปเบเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบกเบตเบชเบญเบเบเบธเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ
เปเบเบฅเปเบงเบฑเบเบเบธ, เปเบเบฑเปเบเบเบตเป:
CFLAGS := -O2
DEBUG_FLAGS := -g
เปเบกเบเบนเบ := ab
เปเบเบฃเปเบเบฃเบก: $(MODULES).o
$(CC) $(CFLAGS) $(inputs) -o $(output)
debug/program: debug/$(MODULES).o
$(CC) $(DEBUG_FLAGS) $(inputs) -o $(output)
%.o : %.c
$(CC) $(CFLAGS) -c $(input) -o $(output)
debug/%.o : %.c
$(CC) $(DEBUG_FLAGS) -c $(input) -o $(output)
$(เบเบตเบเบฑเบ phony): debug/เปเบเบเบเบฒเบ
เบเบฐเปเบซเบเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบกเบฑเบเบเปเบงเบเบงเบดเบเบตเบเบตเปเปเบกเปเบ (a) เบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเปเบซเบกเปเบเบฑเบเบซเบกเบปเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบ
เบเปเบฝเบเบเบฒเบ debug เปเบเบซเบฒ optimized เปเบฅเบฐเบเบฑเบเบเบทเบเปเบเบเปเบญเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ; (เบ)
เบเปเบฒเบเปเบเบดเบเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเบเบฑเบเปเบเบเบเบงเปเบฒเปเบเบเปเบเป repositories. เบเปเปเปเบเบเบตเป
makefile เปเบกเปเบเปเบเปเบเบฝเบเปเบเบปเปเบฒ:
repository debug=. # เปเบฎเบฑเบเปเบซเปเปเบเปเบฃเบฑเบเบเปเบฃเบตเบเปเบญเบเบเบตเบเบฑเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบฑเบเบชเบณเปเบเบปเบฒเบเบญเบ
# เปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเปเบเบเบฐเบเบธเบเบฑเบ.
load_makefile debug CFLAGS=-g
# เบฅเบปเบเบฅเปเบฒเบ CFLAGS เปเบกเบทเปเบญเบเบทเบเปเบญเบตเปเบเบขเบนเปเปเบเปเบเปเบฃเบฑเบเบเปเบฃเบตเบเปเบญเบเบเบตเบเบฑเบ
CFLAGS := -O2 # เบกเบนเบเบเปเบฒเบเบญเบ CFLAGS เปเบกเบทเปเบญเบเบทเบเปเบญเบตเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบตเป
เปเบเบเบเบฒเบ: ao bo
$(CC) $(CFLAGS) $^ -o $@
%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
$(เบเบตเบเบฑเบ phony): debug/เปเบเบเบเบฒเบ
# เบเปเบฒเบเบนเปเปเบเปเบเบดเบก "makepp debug", เบเปเปเบชเปเบฒเบ
# debug/program เปเบเบเปเบเบเบเบฒเบ.
Miscellaneous เบเปเบฒเปเบเบฐเบเปเบฒ
เบงเบดเบเบตเบเบฒเบ do I เบเบฒเบเบเปเปเบชเปเบฒเบ เบซเบเบถเปเบ เบชเปเบงเบ เปเบเบเบเปเบฒเบเบเบฑเบ เบเบฝเบเปเบเป เบเบฑเปเบเบเบฝเบง?
Makepp เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบเบฒเบฐเบงเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเปเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบปเบเบฅเบฐเบเบฝเบ.
เปเบเปเบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบเบตเป, เปเบเบฑเปเบ: เบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบฝเบเปเบเปเบซเบเบถเปเบเปเบกเบเบนเบเบเบฑเบ
เบเปเปโเบกเบนเบโเบเบฒเบโเปเบเปโเปเบโเบขเปเบฒเบโเบฎเบธเบโเปเบฎเบโ. เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเบฑเบโเบฅเบธโเปเบเปโเปเบโเบชเบญเบโเบเบฑเปเบโเบเบญเบโเปเบเบโเบเบฒเบโเบชเปเบฒเบโเบเบฑเปเบโเบเปเบฒโเบญเบดเบโ
เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเบเปเบงเบฑเปเบเบกเบฑเบเบเบฒเบเปเบฅเบเบฐเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ:
makepp DEBUG=3 buggy.o # เบชเปเบฒเบเบกเบฑเบเบเปเบงเบเบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบ.
makepp --dont-build=buggy.o buggy # เปเบเปเบกเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒ "เบเบดเบ" เบเบฒเบเปเบฅเบทเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ.
เบงเบดเบเบตเบเบฒเบ do I เปเบฎเบฑเบเปเบซเป เปเบซเปเปเบเปเปเบเบงเปเบฒ my output เปเบเปเบฅเบเบฐเบเปเบฅเบต เบกเบตเบขเบนเป?
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบเปเบฒโเบเบปเบโเบเบปเบโเบฅเบฐโเบเบฝเบโเบเบฒเบโเบชเปเบฒเบโเบฅเบฒเบโเบเบฒเบโเบเบปเบโเบเบฐโเบฅเบดเบโเปเบเปโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเปเบฎเบฑเบโเปเบซเปโเปเบเปโเปเบเบงเปโเบฒโเปเบเปโเบฅเบฐโเปเบเบฅโเปโเบเบตเปโ
เปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบปเบเบเบฐเบฅเบดเบเปเบกเปเบเบเบถเปเบเบเบฑเบเบกเบฑเบ. เปเบเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบกเบฑเบเบเปเบฒเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ:
เบเบตเป:
# เบงเบดเบเบตเบเบฅเบฒเบชเบชเบดเบ
dummy := $(เบเบฒเบเบเบปเบเบชเบญเบเปเบเบฐ -d $(OUTPUT_DIRECTORY) || mkdir -p $(OUTPUT_DIRECTORY))
# เบเบตเปเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบกเปเบเบเปเบฒเบเบเบงเปเบฒเบเบฒเบเปเบฎเบฑเบเปเบซเปเปเบเบฅเปเบเบฑเบเบซเบกเบปเบเบเบถเปเบเบเบฑเบ
# $(OUTPUT_DIRECTORY) เปเบฅเบฐเบกเบตเบเบปเบเบฅเบฐเบเบฝเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบ.
# เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเปเบเบปเปเบฒเบเปเบญเบเปเบเป := เปเบเบ = เปเบเบทเปเบญเบเบฑเบเบเบฑเบเบกเบฑเบ
# เบเบฐเบเบดเบเบฑเบเบเบฑเบเบเบต.
# เบงเบดเบเบตเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบ: เบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบ Perl, OUTPUT_DIRECTORY local var
perl_begin
-d $OUTPUT_DIRECTORY เบซเบผเบท mkdir $OUTPUT_DIRECTORY;
perl_end
# เบงเบดเบเบตเบเบฒเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก, เบเปเปเบกเบตเบซเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบกเบตเบขเบนเป
&mkdir -p $(OUTPUT_DIRECTORY)
เบซเบเบถเปเบเปเบเบเปเบฒเบเบฐเปเบซเบผเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบงเบเบเบฐเบขเบนเปเปเบเปเบเบฑเบเบเปเบฒเบเปเบเบดเบเบเบญเบ makefile เบเบญเบเบเปเบฒเบ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเบกเบฑเบเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบ
เบเปเบญเบเบเบตเปเบเบฐเบกเบตเบชเบดเปเบเปเบเปเบเปเบเบตเปเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต.
เบงเบดเบเบตเบเบฒเบ do I เบเบปเบเบเบฑเบเบเบฑเบเปเบเป a เบเปเบฒเบชเบฑเปเบ to เบเบฐเบเบดเบเบฑเบ on เบเบธเบ เบชเปเบฒเบ?
เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเปเบกเปเบเบเปเปเปเบเปเบเบปเบเปเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฑเบเบซเบกเบปเบ, เปเบเปเบเบฝเบเปเบเปเบเบฐเบเบดเบเบฑเบเบกเบฑเบ, เปเบเบฑเปเบ:
เบเบตเป:
dummy := $(เบงเบฑเบเบเบตเปเบเบฐ > last_build_timestamp)
เบซเบผเบทเปเบญเบปเบฒเปเบชเปเปเบเบเบฅเบฑเบญเบ perl, เปเบเบเบเบตเป:
perl_begin
system("เบชเบฑเปเบโเปเบซเปโเบเบฐโเบเบดโเบเบฑเบ");
perl_end
เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเปเปเปเบชเบเบเบตเปเบกเบฑเบเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเปเปเบเปเบฝเบงเบเปเบญเบ
เบเปเบฒเบฅเบฑเบเบเปเบฒเปเบเบตเบเบเบฒเบ.
เบงเบดเบเบตเบเบฒเบเบเบตเบชเบญเบเปเบกเปเบเปเบเบทเปเบญเบเบฐเบเบฒเบเปเบเบฅเปเปเบเบฑเบเปเบเบปเปเบฒเบซเบกเบฒเบ phony, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเบฅเปเบเบตเปเปเบเปเบเบดเบ.
เบเบตเปเบเบฐเบเบฑเบเบเบฑเบเปเบซเป makepp เบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเปเบซเบกเปเปเบเบทเปเบญเบชเปเบฒเบเบกเบฑเบเบเบธเบเบเบฑเปเบ, เปเบเปเบงเปเบฒเบเบฝเบเปเบเปเบเปเบฒเบกเบฑเบ
เบเบฒเบเบปเบเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบเบญเบเบเบปเบเบฅเบฐเบเบฝเบเบเบฒเบเบขเปเบฒเบ.
เบงเบดเบเบตเบเบฒเบ do I เบชเบฑเปเบ เปเบเป เบชเบฐเปเบเบ เบเบฒเบเบเปเปเบชเปเบฒเบ เบเปเบฒเบชเบฑเปเบ?
เบกเบฑเบเบเบฐเบกเบตเบซเบผเบฒเบเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเบฒเบชเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบขเบนเปเปเบ
เปเปเบฒเบเปเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเป. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบชเบดเปเบเบเบตเปเบชเบฐเปเบเบเปเบเบเบเบฒเบเบชเบฐเบเบฑเบเบเบฑเปเบเบเบฒเบเบชเบฐเปเบเบเบเบญเบ
เบเปเบฒเบชเบฑเปเบเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบดเบกเบญเบญเบเบขเปเบฒเบเบเบฑเบเปเบเบเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบญเบเบเปเบฒเบชเบฑเปเบ. เบกเบฑเบ
เบเปเบฒเบเบเบตเปเบเบฐเบเบดเบกเบญเบญเบเบเบฝเบเปเบเปเบชเปเบงเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบญเบเบเปเบฒเบชเบฑเปเบเปเบเบเปเบเป "$(filter_out )", เปเบเบฑเปเบ:
เบเบตเป:
ALL_CFLAGS = $(CFLAGS) $(INCLUDES) $(ADDL_CXX_FLAGS) $(DEBUG_FLAGS)
%.o : %.c
@&echo $(notdir $(CC)) ... \
$(filter_out -I* $(ADDL_CXX_FLAGS), $(ALL_CFLAGS)) \
-c $(เบเปเบญเบเบเปเปเบกเบนเบ)
@$(CC) $(ALL_CFLAGS) -c $(input) -o $(output)
("@" เบขเบนเปเบเบฒเบเบซเบเปเบฒเบเบญเบเบเปเบฒเบชเบฑเปเบเบชเบฐเบเบฑเบเบเบฑเปเบเบเบฒเบเบเบดเบกเบญเบญเบเบเปเบฒเบชเบฑเปเบ.)
เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบซเบฑเบเบเบปเบงเปเบฅเบทเบญเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบเปเบเบฐเบเปเปเบชเบฐเปเบเบเบเบฑเบเบซเบกเบปเบ
เบเบฐโเบเบญเบโเบกเบตโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบ (เบเบถเปเบโเปเบโเบเบฑเปเบโเบกเบฑเบโเบเบฐโเบกเบตโเบซเบผเบฒเบโเบซเบผเบฒเบโ!). เบเปเบฒเบเบฒเบเบชเปเบงเบเบเบตเปเปเบเบปเปเบฒเบชเบปเบเปเบ
in เปเบกเปเบเบเบดเบเบเปเปเบเบฑเบเปเบเบเปเบฒเบชเบฑเปเบเบเบญเบเบเปเบฒเบ, เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบเบฑเบเบเบฑเบ "เบเบดเบก" (เปเบเบดเปเบเปเบเบตเปเบก a
เปเบเบงเปเปเป, เบชเบฐเบเบฑเปเบเปเบเบปเปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบซเบผเบฒเบเบญเบฑเบ):
เปเบเบปเปเบฒโเบซเบกเบฒเบ:
@... $(เบเบดเบกเปเปเบฒเบชเบปเบเปเบ)...
เบงเบดเบเบตเบเบฒเบ do I เปเบเบ a เปเบญเบเบฐเบชเบฒเบ เปเบเบปเปเบฒเปเบเปเบ เบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช?
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเบนเบเปเบเบเปเบเบฅเปเบเบตเปเบเปเปเบเบฑเบเปเบเบ, เบกเบฑเบเบเปเปเบเบธเปเบกเบเปเบฒเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบเบชเบฐเปเบเบ. เปเบเปเบเบเบเบฒเบเบซเบเบถเปเบ
เบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบฅเป xml, เปเบงเบปเปเบฒ foobar.xml เปเบเบดเปเบเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช foobar.out:
เบ
เบ
เบ
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบชเบดเบเปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบฎเบนเบเปเบเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเป, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบงเบดเปเบเบฒเบฐ xml. เบเบฑเบ
buildin & sed, เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเปเบงเบเบเบฒเบเบเบปเบเปเบเบเบเบตเปเบเปเบฒเบเบเบฒเบเบชเบฒเบกเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเบชเบฒเบกเบเบฐเปเบเบเบเบญเบ
เบชเบฒเบ:
%.d: %.xml
&sed's! !$(stem).เบญเบญเบ: \\! || เบช! (.+) !$$1 \\! || เบช! !# เบซเบงเปเบฒเบ!' \
$(input) -o $(output)
เบฅเบงเบก foobar.d
เบเบฐเบเบฒเบเบฒเบกเบฅเบงเบกเปเบญเบปเบฒเบญเบฑเบเบเบตเป, เบเบฐเบฅเบดเบ "foobar.d" เบเปเบฒเบญเบดเบ:
foobar.out: \
เปเบเบฑเบ \
b \
เบ \
# เบซเบงเปเบฒเบ
เบซเบงเปเบฒเบเปเบเบปเปเบฒ (เบเบฝเบเปเบเปเบเปเบฒเบเบดเบเปเบซเบฑเบเบซเบผเบทเบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบเปเป) เบซเบผเบตเบเบฅเปเบฝเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเบงเบปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบดเบเบเบฒเบก
backslash. เบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบเบฐเบฅเบดเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบซเบผเบฒเบเปเบเบงเปเบกเปเบ:
%.d: %.xml
&sed's! !$(stem).เบญเบญเบ: \$$((! ||s! !))! || s!<.+?>!!g' \
$(input) -o $(output)
เบฅเบงเบก foobar.d
เบเบตเปเบเบฐเบฅเบดเบเบเบฝเบเปเบเบปเปเบฒ:
foobar.out: $((
a
b
c
))
เบเปเบฒเบเปเบฒเบเบกเบตเบเบฒเบเบเบฝเบเบเบทเบเปเบซเบกเปเบเบตเปเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ, เปเบซเปเบเปเบฒเบเบปเบเบซเบเปเบฒเบเบตเปเบเบฒเบเปเบ makefile เบซเบผเบทเปเบ a
เปเบกเบเบนเบเบเบตเปเบเปเบฒเบเบเบฐเบเบญเบเบกเบต. เปเบเบฑเปเบ: เบเบฒเบเบเปเปเบเบณเบเบปเบ $_ เบเบฐเบเปเบฒเบกเบชเบฒเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ:
sub myfilter {
เบเบฑเบเบเบทเบ undef $_ เบเปเบฒ /
$stem เบเบญเบเบเปเบญเบ = f_stem;
เบช! !$stem.out: \$((!||s! !))! || s!<.+?>!!g;
}
%.d: %.xml
&sed's! !$(stem).เบญเบญเบ: \$$((! ||s! !))! || s!<.+?>!!g' \
$(input) -o $(output)
เบฅเบงเบก foobar.d
เปเบเป makepp_cookbook เบญเบญเบเบฅเบฒเบเปเบเบเปเบเปเบเปเบฅเบดเบเบฒเบ onworks.net