மேக்ஃபைலில் வைல்ட் கார்டுகள் மற்றும் ஃபோர்ச்

Mekhpailil Vailt Kartukal Marrum Hporc



ஒரு கோப்பு எப்போதுமே வெவ்வேறு வகையான உள்ளடக்கத்தால் ஆனது: அது ஒரு எளிய உரைக் கோப்பாகவோ, நிரல் குறியீடு கோப்பாகவோ அல்லது ஏதேனும் மேக்ஃபைலாகவோ இருக்கலாம். எந்தவொரு கோப்பின் உள்ளடக்க வகையும் அதை தனித்துவமாக்குகிறது மற்றும் கோப்புகளின் மற்ற வடிவமைப்பிலிருந்து வேறுபடுத்துகிறது. அது போலவே, மேக்ஃபைல் அதன் வேலையைச் சரியாகச் செய்ய வெவ்வேறு கூறுகளைப் பயன்படுத்தும் விதிகளைக் கொண்டுள்ளது. அந்த உறுப்புகளிலிருந்து, தனித்துவமான மற்றும் கூடுதல் ஒன்றைச் செய்வதற்கு வைல்டு கார்டு மற்றும் ஃபோர்ச் ஆகியவை தேவைப்படுகின்றன. இந்த வழிகாட்டியில், வைல்டு கார்டுகள் மற்றும் ஃபோர்ச்கள் மேக்ஃபைலில் பயன்படுத்தப்படும்போது அவற்றின் சக்தியைப் பற்றி விவாதிப்போம்.

மேக்ஃபைலில் வைல்ட் கார்டுகள்

பொதுவாக, வைல்டு கார்டு கணிக்க முடியாத ஒரு காரணியாக அறியப்படுகிறது, மேலும் சூழ்நிலையை எந்த வகையிலும் மாற்ற முடியும். மேக்ஃபைலில் உள்ள வைல்டு கார்டுகள், அது ஒரு கோப்பாக இருந்தாலும் சரி, எந்த கோப்புறையாக இருந்தாலும் சரி, தற்போதைய வேலை செய்யும் கோப்பகத்தில் இருந்து சாத்தியமான அனைத்து வடிவங்களையும் கண்டறியும் போனஸைச் செய்யப் பயன்படுகிறது. இந்த மூல கோப்புகள் எந்த வகையிலும் இருக்கலாம்.







மேக்ஃபைலில் வைல்டு கார்டைப் பயன்படுத்த, “*” அல்லது “?” என்ற நட்சத்திரக் குறியீட்டைப் பின்பற்றும் “வைல்ட் கார்டு” முக்கிய சொல்லைப் பயன்படுத்த வேண்டும். குறி மற்றும் ஒரு புள்ளி மூலம் இணைக்கப்பட்ட கோப்பு நீட்டிப்பு. நீங்கள் '?' ஐயும் பயன்படுத்தலாம். ஒரு எழுத்தைத் தேட கையொப்பமிடவும் மற்றும் எத்தனை எழுத்துகளுடன் பொருந்துவதற்கு '*' எனவும் குறிப்பிடவும். இந்த முழு கட்டமைப்பையும் அடைப்புக்குறிக்குள் மற்றும் '$' அடையாளத்திற்குள் பயன்படுத்த வேண்டும். எடுத்துக்காட்டாக, வைல்டு கார்டு வழியாக அதன் மதிப்புக் கோப்பைப் பெறும் “SRCS” மாறியை நாங்கள் அறிவிக்கிறோம். இந்த வைல்டு கார்டு அனைத்து கோப்புகளையும் அவற்றின் முடிவில் “cpp” வடிவத்துடன் தேடுகிறது.





Makefile இல் Foreach

மேக்ஃபைலின் ஃபோர்ச் செயல்பாடு நிரலாக்க மொழிகளில் ஃபோர்ச் லூப்பைப் போலவே செயல்படுகிறது - பட்டியலில் உள்ள உருப்படிகளை மீண்டும் செய்யவும். மேக்ஃபைலில் உள்ள foreach செயல்பாடு, பட்டியலின் ஒவ்வொரு உருப்படியிலும் ஒரு குறிப்பிட்ட செயலைச் செய்கிறது. இந்த உறுப்பு மாறி அல்லது ஏதேனும் மூலக் கோப்பாக இருக்கலாம். எடுத்துக்காட்டாக, மூன்று மூலக் கோப்புகளின் பட்டியலைக் கொண்ட SOURCES மாறி மூலம் மேக்ஃபைலில் உள்ள ஃபோர்ச் செயல்பாட்டின் தொடரியல் பற்றி விரிவாகக் கூறுகிறோம். ஃபோர்ச் செயல்பாடு இந்த SOURCES மாறியைப் பயன்படுத்தி மூன்று ஆப்ஜெக்ட் கோப்புகளுக்கு ஒரே பெயரை உருவாக்கி, மூலக் கோப்புகளின் பட்டியலை மீண்டும் செய்து அவற்றை மற்றொரு 'OBJECTS' மாறியில் சேமிப்பது. ஒவ்வொரு சி கோப்பிற்கும் ஒரு ஆப்ஜெக்ட் கோப்பை உருவாக்குவதற்கு மேக்ஃபைல் விதி எவ்வாறு பயன்படுத்தப்படலாம் என்பதை கடைசி இரண்டு வரிகள் காட்டுகின்றன.





ஆதாரங்கள் := file1.c file2.c file3.c
பொருள்கள் := $ ( foreach src,$ ( ஆதாரங்கள் ) ,$ ( src:.c=.o ) )
$OBJECTS : % .O: % .சி
$ ( CC ) $ ( CFLAGS ) -சி $ < -ஓ $ @

எடுத்துக்காட்டு 1: வைல்ட் கார்டுகளைப் பயன்படுத்துதல்

வைல்டு கார்டுகள் மற்றும் ஃபோர்ச் செயல்பாடுகளின் விளக்கப்படம் மற்றும் செயல்பாட்டைக் காட்ட, நாங்கள் C++ கோப்பை அறிமுகப்படுத்துகிறோம். இந்த 'salary.cpp' கோப்பு 'iostream' தலைப்பைப் பயன்படுத்தி உள்ளீடு மற்றும் வெளியீட்டு ஸ்ட்ரீம்களை சீராக பயன்படுத்த அனுமதிக்கப்படுகிறது. முக்கிய முறை முழு எண் வகையின் மாறி “கள்” மற்றும் இயக்க நேரத்தில் உள்ளீட்டு மதிப்பைக் கேட்க “கவுட்” அறிக்கையை அறிவிக்கிறது. 'சின்' நிலையான உள்ளீட்டு ஸ்ட்ரீம் இயக்க நேரத்தில் பயனரிடமிருந்து மதிப்பைப் பெற்று அதை 's' மாறியில் சேமிக்கிறது. 'கவுட்' என்பது கன்சோல் திரையில் ஒரு பயனரால் உள்ளிடப்பட்ட மதிப்பைக் காட்டுகிறது.

# அடங்கும்
பெயர்வெளி std ஐப் பயன்படுத்துதல்;
முழு எண்ணாக ( ) {
int கள்;
கூட் << 'சம்பளத்தை உள்ளிடவும்:' ;
உண்ணுதல் >> கள்;
கூட் << ' \n சம்பளம்: ' << கள் << endl;
திரும்ப 0 ;
}



சி++க்கான கம்பைலரை வரையறுக்கும் “சிஎக்ஸ்எக்ஸ்” மாறியுடன் மேக்ஃபைலைத் தொடங்குகிறோம், மேலும் சி++ கம்பைலருக்கான கொடிகளை சிஎக்ஸ்எக்ஸ்எஃப்எல்ஏஜிஎஸ் மாறி வைத்திருக்கும். EXECUTABLE மாறியானது, ஒரு மேக்ஃபைலைச் செயல்படுத்திய பிறகு உருவாக்கப்படும் இயங்கக்கூடிய 'ஹலோ' கோப்பின் பெயரைக் கொண்டுள்ளது. SRCS மாறியானது அனைத்து C++ கோப்புகளையும் தற்போதைய கோப்பகத்திலிருந்து வைல்டு கார்டு '*' ஐப் பயன்படுத்தி '.cpp' என்று முடிவடையும் எந்த வடிவத்தையும் தேடுகிறது. OBJS மாறியானது SRCS மாறியைப் பயன்படுத்தி உருவாக்கப்படும் பொருள் கோப்புகளின் பெயர்களைக் கொண்டுள்ளது, “cpp” நீட்டிப்பை “o” உடன் மாற்றுகிறது. இயல்புநிலை 'அனைத்தும்' இலக்கு மேக்ஃபைலை உருவாக்குகிறது மற்றும் அது இயங்கக்கூடிய மாறியைப் பொறுத்தது.

'OBJS' மாறி மூலம் உருவாக்கப்பட்ட கோப்பு பெயர்களைப் பயன்படுத்தி OBJS மாறி (பொருள் கோப்புகளின் பெயர்கள்) ஆப்ஜெக்ட் கோப்பைச் சார்ந்திருக்கும் இலக்கு 'ஹலோ' கோப்பை முதல் விதி உருவாக்குகிறது. இரண்டாவது மேக்ஃபைல் விதியானது '.o' நீட்டிப்புடன் ஆப்ஜெக்ட் கோப்பை உருவாக்குகிறது, இது C++ குறியீடு கோப்பை தொகுத்த பிறகு C++ கோப்பைப் பொறுத்தது. இங்கே, '%' என்பது 'cpp' உடன் முடிவடையும் எந்த வடிவத்தின் கோப்புப் பெயரையும் தேடுவதற்கான வைல்டு கார்டு ஆகும். முடிவில், '-f' கொடியைப் பயன்படுத்தி ஒரு கோப்பகத்தில் இருந்து புதிதாக உருவாக்கப்பட்ட இயங்கக்கூடிய மற்றும் பொருள் கோப்புகளை வலுக்கட்டாயமாக சுத்தம் செய்ய சுத்தமான இலக்கு அதன் 'rm' கட்டளையைப் பயன்படுத்துகிறது.

CXX = g++
CXXFLAGS = - சுவர் -படிப்பு =c++ பதினொரு
செயல்படுத்தக்கூடியது = வணக்கம்
SRCS = $ ( காட்டு அட்டை * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
அனைத்தும்: $ ( செயல்படுத்தக்கூடியது )
$ ( செயல்படுத்தக்கூடியது ) : $ ( OBJS )
$ ( CXX ) $ ( CXXFLAGS ) -ஓ $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXFLAGS ) -சி $ < -ஓ $ @
சுத்தமான:
rm -எஃப் $ ( செயல்படுத்தக்கூடியது ) $ ( OBJS )

'உருவாக்கு' வழிமுறையை இயக்கியவுடன், இலக்கு மற்றும் பொருள் கோப்புகள் இரண்டும் உருவாக்கப்பட்டன. இயங்கக்கூடிய “ஹலோ” கோப்பை இயக்கிய பிறகு, பயனரிடம் சம்பளத்தை உள்ளிடுமாறு கேட்கப்படுகிறார், மேலும் நாங்கள் “67000” ஐச் சேர்க்கிறோம். இறுதியில், சம்பளம் மீண்டும் காட்டப்படும்.

செய்ய

எடுத்துக்காட்டு 2: Foreach ஐப் பயன்படுத்துதல்

வைல்டு கார்டுகளைப் பயன்படுத்திய பிறகு, மேக்ஃபைலில் ஃபோர்ச் செயல்பாட்டைப் பயன்படுத்த வேண்டிய நேரம் இது. மீதமுள்ள மேக்ஃபைல் குறியீடு ஒன்றுதான். வரி 6 இல், கேட், கிம், டிம் ஆகிய மூன்று மதிப்புகளின் பட்டியலுடன் 'NAMES' என்ற மற்றொரு மாறியை துவக்குகிறோம். இயல்புநிலை 'அனைத்தும்' இலக்கு இயங்கக்கூடிய மாறி (இலக்கு கோப்பு பெயர் 'ஹலோ') மற்றும் foreach அறிக்கையைப் பொறுத்தது. 'addprefix' செயல்பாடு 'NAMES' பட்டியலில் உள்ள ஒவ்வொரு பெயரின் தொடக்கத்திலும் 'run_' ஐ முன்னொட்டாக வைப்பதன் மூலம் இலக்கு பெயர்களை மாறும் வகையில் உருவாக்க 'NAMES' மாறியை மீண்டும் செயல்படுத்துகிறது.

எட்டு வரியில் உள்ள விதி, ஒரு வெளியீடு இயங்கக்கூடிய இலக்கு கோப்பு, அதாவது ஹலோ, 'OBJS' ஐச் சார்ந்தது என்பதைக் குறிக்கிறது. '-o' கொடி OBJS ஐப் பயன்படுத்தி இலக்கு வெளியீட்டு கோப்பை உருவாக்குகிறது. பத்தாவது வரியில் உள்ள விதி 'cpp' நீட்டிப்புடன் மூலக் கோப்புகளைப் பயன்படுத்தி இலக்கு பொருள் கோப்பை உருவாக்குகிறது. அவ்வாறு செய்ய, '-c' கொடியானது ஒரு மூல கோப்பை தொகுக்கவும் மற்றும் இலக்கு உருவாக்கத்திற்கு தேவையான தொடர்புடைய பொருள் கோப்பை உருவாக்கவும் பயன்படுத்தப்படுகிறது. பதின்மூன்றாவது வரியில், முன்னொட்டாக “run_” இல் தொடங்கி வெவ்வேறு பெயர்களுடன் வெளியீட்டை உருவாக்க EXECUTABLE மாறியைப் பயன்படுத்துகிறோம். முடிவில், சுத்தமான இலக்கு மற்றும் ஃபோனி இலக்குகள் பொருள் மற்றும் இலக்கு கோப்புகளை அகற்றி சுத்தம் செய்யும்.

CXX = g++
CXXFLAGS = - சுவர் -படிப்பு =c++ பதினொரு
# இயங்கக்கூடிய இலக்கு கோப்பு
செயல்படுத்தக்கூடியது = வணக்கம்
SRCS = $ ( காட்டு அட்டை * .cpp )
OBJS = $ ( SRCS:.cpp=.o )
# பெயர் பட்டியல்
பெயர்கள் = கேட் கிம் டிம்
# இலக்குகள்
அனைத்தும்: $ ( செயல்படுத்தக்கூடியது ) $ ( addprefix run_, $ ( பெயர்கள் ) )
$ ( செயல்படுத்தக்கூடியது ) : $ ( OBJS )
$ ( CXX ) $ ( CXXFLAGS ) -ஓ $ @ $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXFLAGS ) -சி $ < -ஓ $ @
# ஒவ்வொரு பெயருக்கும் இலக்குகளை உருவாக்கவும்
ஓடு_ % : $ ( செயல்படுத்தக்கூடியது )
. / $ ( செயல்படுத்தக்கூடியது ) $*
சுத்தமான:
rm -எஃப் $ ( செயல்படுத்தக்கூடியது ) $ ( OBJS )
# போலியான இலக்குகள்
.ஃபோனி: எல்லாம் சுத்தமாக இருக்கிறது

'உருவாக்கு' அறிவுறுத்தலின் பயன்பாடு, இயங்கக்கூடிய 'ஹலோ' இலக்கை உருவாக்குகிறது மற்றும் 'NAMES' மாறியில் குறிப்பிடப்பட்டுள்ள ஒவ்வொரு பெயருக்கும் நிரலை இயக்குகிறது.

செய்ய

'run_' முன்னொட்டுடன் பட்டியலிலிருந்து பெயரைப் பயன்படுத்தி உங்கள் வெளியீட்டை மாற்றலாம்.

ரன்_கிம் செய்யுங்கள்

முடிவுரை

இந்த வழிகாட்டி, மேக்ஃபைலில் வைல்டு கார்டுகள் மற்றும் ஃபோர்ச் கான்செப்ட்களைப் பயன்படுத்துவதைப் பற்றி விவாதித்தது, அதே நேரத்தில் அவற்றின் தொடரியல் தனித்தனியாக விவாதிக்கப்பட்டது. அதன் பிறகு, ஒரே நீட்டிப்புகளுடன் கோப்புகளைப் பெறுவது மற்றும் மாறி பட்டியலில் மதிப்புகளை மீண்டும் செய்வது பற்றிய வெளியீடுகளுடன் அவை ஒவ்வொன்றும் செயல்படுவதை விரிவாகக் கூற குறியீடு எடுத்துக்காட்டுகளைப் பற்றி விவாதித்தோம்.