ரிச்சர்ட் டபிள்யூ.எம். ஜோன்ஸ், ஆசிரியர் , Red Hat-இல் பணிபுரிகிறேன், புதிய சட்டசபை பயன்பாடு , ஸ்கிரிப்ட்களின் ஒட்டுமொத்த எளிமை மற்றும் தெளிவைப் பராமரிக்கும் அதே வேளையில் மேக் பயன்பாட்டின் குறைபாடுகள் மற்றும் சிக்கல்களை நீக்குவதை நோக்கமாகக் கொண்டது. மேக் பயன்பாடு 1976 இல் வடிவமைக்கப்பட்டது மற்றும் பல கருத்தியல் குறைபாடுகளைக் கொண்டுள்ளது. ஒட்டுமொத்த கருத்தை மாற்றாமல் இந்த குறைபாடுகளை நிவர்த்தி செய்வதை இலக்குகள் நோக்கமாகக் கொண்டுள்ளன.
இலக்குகளின் மூலக் குறியீடு GPLv2+ இன் கீழ் உரிமம் பெற்றது.
:
- ஒரே ஒரு சார்புத் தீர்மான உத்திக்கு மட்டுமே ஆதரவு - "இலக்கு கோப்பு காணாமல் போயிருந்தாலோ அல்லது சார்புகளில் ஒன்றை விட பழையதாக இருந்தாலோ ஒரு உருவாக்க வழிமுறை இயக்கப்படும்." URL இருப்பைச் சரிபார்த்தல், எந்தக் கோப்போடும் மாற்றியமைக்கும் நேரங்களை ஒப்பிடுதல் மற்றும் தொகுப்பு உருவாக்கத்தை மதிப்பீடு செய்தல் போன்ற பிற உத்திகளைச் செயல்படுத்த கோல்ஸ் திட்டமிட்டுள்ளது. , செக்சம்களின் ஒப்பீடு, தேர்ந்தெடுக்கப்பட்ட சோதனைத் தவிர்ப்புடன் சோதனைத் தொகுப்புகளை இயக்குதல்.
- பில்ட் இலக்குகளை செயலாக்கும்போது, make கோப்புகள் மற்றும் விதி பெயர்களுக்கு இடையில் வேறுபடுத்துவதில்லை, இதன் விளைவாக, விதி இயக்கப்படும்போது அது உருவாக்குவதாகக் கூறும் கோப்பு உண்மையில் உருவாக்கப்படுமா என்பதை உறுதிப்படுத்த எந்த சோதனையும் இல்லை. எடுத்துக்காட்டாக, "test" என்ற விதி சோதனை ஸ்கிரிப்ட்களை இயக்கினால், "test" என்ற கோப்பு தற்செயலாக உருவாக்கப்பட்டால், சோதனைகள் அழைக்கப்படுவது நிறுத்தப்படும், ஏனெனில் make இலக்கு கட்டமைக்கப்பட்டுள்ளது என்றும் எந்த நடவடிக்கையும் தேவையில்லை என்றும் கருதும். (இதைச் சுற்றி வேலை செய்ய, make இல் ".PHONY:test" கட்டளையை நீங்கள் குறிப்பிடலாம்.) இலக்குகள் கோப்புகள் மற்றும் விதி பெயர்களுக்கு இடையில் வெளிப்படையாக வேறுபடுகின்றன.

- அசெம்பிளி வழிமுறைகளுக்கு ஒரே ஒரு அளவுருவை வழங்குவதில் சிக்கல்.

இலக்குகள் பெயரிடப்பட்ட எத்தனை அளவுருக்களையும் பயன்படுத்த அனுமதிக்கிறது. எடுத்துக்காட்டாக, நீங்கள் பெயரிலிருந்து பிழைத்திருத்த கோப்பு கொடியை தனித்தனியாகப் பிரித்தெடுக்கலாம்:

- ஷெல் மொழிபெயர்ப்பாளருடன் தொடர்புகொள்வதில் சிக்கல்கள். எடுத்துக்காட்டாக, கோப்பு மற்றும் கோப்பகப் பெயர்களில் இடைவெளிகள் தப்பிப்பதைக் கட்டுப்படுத்த வேண்டிய அவசியம், ஒவ்வொரு கட்டளைக்கும் தனித்தனி ஷெல் மொழிபெயர்ப்பாளரைத் தொடங்குவதற்கான வள மேல்நிலை, "$" சின்னத்தின் இரட்டை விளக்கம் (ஷெல் மற்றும் மேக் இரண்டிலும் பயன்படுத்தப்படுகிறது) மற்றும் உள்தள்ளல்.
குறிப்பிடப்பட்ட சிக்கல்கள் இலக்குகளில், அசெம்பிளி மாறிகளுக்கு “$” க்கு பதிலாக “%” குறியீட்டைப் பயன்படுத்தி (“$” ஷெல்லுக்கு மட்டுமே உள்ளது), ஒரு பாகுபடுத்தியைப் பயன்படுத்தி தீர்க்கப்படுகின்றன. , இதற்கு பாதைகள் மற்றும் கோப்பு பெயர்களை மேற்கோள் காட்டுதல் மற்றும் சுருள் அடைப்புக்குறிகளுடன் குறியீடு தொகுதிகளை வரையறுத்தல் தேவைப்படுகிறது. முழு கட்டளைத் தொகுதியும் கட்டளை ஷெல்லின் ஒற்றை நிகழ்வில் இயக்கப்படுகிறது, மேலும் தொகுதிக்குள், சிறப்பு இடைவெளிகளால் பிணைக்கப்படாமல் தன்னிச்சையான குறியீடு வடிவமைப்பு அனுமதிக்கப்படுகிறது.
இருந்தது:
இலக்கு: foo.o bar.o
${CC} ${CFLAGS} $< -o $@ஆனது:
"இலக்கு": "foo.o", "bar.o" {
%CC %CFLAGS %< -o %@
}
இலக்குகளின் பிற அம்சங்கள்:
- தனிப்பயன் பெயர்கள் மற்றும் அளவுருக்களைக் குறிப்பிடுவதற்கான விருப்ப ஆதரவு:
இலக்கு அனைத்தும் = : "இலக்கு"
இலக்கு இணைப்பு =
"இலக்கு" : "foo.o", "bar.o" { ... }இலக்கு தொகுத்தல் (பெயர்) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - இரண்டு துவக்க முறைகள்: கோப்பு பெயர்களுடன் கட்டமைப்பு இலக்குகளை பொருத்துவதற்கான மேக் பயன்முறை (எ.கா. கோப்பு "foo.o" இலக்கு "%name.o" உடன் பொருந்துகிறது), மற்றும் நேரடி தொகுப்பு முறை:
இலக்கு அனைத்தும் = : இணைப்பு
இலக்கு இணைப்பு =
"இலக்கு" : "foo.o", தொகுக்கவும் ("பார்") { ... }இலக்கு தொகுத்தல் (பெயர்) =
"%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ } - ஒரு பில்ட் இலக்கை மீண்டும் கட்டமைக்க வேண்டுமா என்பதைத் தீர்மானிக்கப் பயன்படுத்தக்கூடிய சிறப்பு விதிகளால் பில்ட் தந்திரோபாயங்கள் வரையறுக்கப்படுகின்றன. ஒரு கோப்பு இருப்பு தேவைப்பட்டால், அது பொருத்தமான கொடியைப் பயன்படுத்தி வெளிப்படையாகக் குறிப்பிடப்படுகிறது (விதியின் பெயருக்கு "இலக்கு" மற்றும் கோப்பு சரிபார்ப்புக்கு *file("target").
"இலக்கு" : "foo.o", "bar.o" { ... }
*கோப்பு("இலக்கு"): *கோப்பு("foo.o"), *கோப்பு("bar.o") { ... }
- டெவலப்பர் தனிப்பயன் உருவாக்க உத்திகளை வரையறுக்க முடியும். "*கோப்பு" கொடி இயல்பாகவே வரையறுக்கப்படுகிறது (@{…} வெளியீட்டு அடக்கத்தைக் குறிக்கிறது, மேலும் "வெளியேறு 99" மறுகட்டமைப்பின் தேவையைக் குறிக்கிறது):
தந்திரோபாயம் *கோப்பு (கோப்பு பெயர்) = @{
சோதனை -f % கோப்பு பெயர் || வெளியேறு 99
% இல் f க்குஆதாரம்: opennet.ru



