Si هنگام به روزرسانی فایلهای خاص می خواهید کاری را اجرا یا به روز کنید، ابزار ساخت مفید خواهد بود. ابزار make به یک فایل makefile نیاز دارد که مجموعه ای از وظایف را برای اجرا مشخص می کند.
این نام برای بسیاری از شما آشنا به نظر می رسد زیرا ممکن است شما برای ساخت برنامه از کد منبع از make استفاده کرده باشید. اکثر پروژه های منبع باز از make برای کامپایل باینری اجرایی نهایی استفاده می کنند که می تواند با استفاده از make install نصب شود.
در این مورد بیایید درک کنیم که چگونه این نوع پرونده ها در لینوکس کار می کنند.
یک فایل makefile اصولاً به چهار نوع اصطلاح اصلی تقسیم می شود:
- نظرات
- متغیرها
- قوانین صریح
- قوانین ضمنی
قوانین صریح می گوید که چه پرونده هایی به پرونده های دیگر و همچنین دستورات لازم برای کامپایل یک پرونده خاص بستگی دارد.
در حالی که ضمنی ها شبیه صریح هستند ، اما با این تفاوت که آنها دستورات اجرا را نشان می دهند ، اما استفاده می کند از پسوندهای پرونده برای تعیین اینکه کدام دستورات را اجرا کند.
در این مثال ما نمی خواهیم از این دو مورد گذشته استفاده کنیم ، ما فقط با چاپ نسخه کلاسیک "Hello World" در ترمینال شروع می کنیم.
برای این کار ما می خواهیم یک فهرست خالی با نام مورد نظر خود ایجاد کنیم.
در این مورد بگذارید آن را "ساخت نمونه" بنامیم و در این ما می خواهیم یک پرونده با محتوای زیر ایجاد کنیم:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
اکنون پرونده را با تایپ کردن make در داخل پوشه اجرا کنید ، خروجی خواهد بود:
make
echo "Hola Mundo"
Hola Mundo
همانطور که می بینید هنگام ساخت makefile ، دستور echo "Hello World" نمایش داده می شود و به دنبال آن خروجی دستور واقعی ارائه می شود. ما اغلب چنین چیزی را نمی خواهیم. برای سرکوب این خروجی هنگام اجرای make ، کافیست "@" را قبل از echo اضافه کنید:
مثال عملی این است:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
اکنون می توانیم مجدداً پرونده را اجرا کنیم. خروجی فقط این باید نشان دهد:
make
Hola Mundo
این کاملا اساسی است. اما همانطور که می دانید ، makefile ها حاوی چیزهای زیادی هستند که از آنها نشانگر دنباله هایی است که باید دنبال کنید.
می توان چند توالی ساده به این پرونده اضافه کرد.
چی ما می خواهیم فایل را به صورت زیر ویرایش کنیم:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
هنگام استفاده مجدد از فایل ، این فقط هدف اول را اجرا می کند. این بدان دلیل است که فقط اولین هدف در پرونده ساخت ، هدف پیش فرض است.
برای اجرای متوالی لازم است که آن را در پرونده با "همه" نشان دهید. مسئولیت "آنجا" است که اهداف دیگر را فراخوانی کند.
all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
می توانید مجدداً اقدام به ساخت make کنید و می بینید که درون پوشه فایلی به نام "File.txt".
به همان شیوه امکان اجرای یک هدف در داخل فایل makefile وجود دارد، این به طور کلی مورد استفاده قرار می گیرد.
ما می خواهیم پرونده خود را اصلاح کنیم و در پایان موارد زیر را اضافه خواهیم کرد:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
می توانید دوباره make را اجرا کنید و فایل txt را دوباره ایجاد می کند. همانطور که خواهید دید ، همان کار قبلی را انجام خواهد داد. اما اکنون قصد داریم هدفی را که در داخل فایل makefile است ، اجرا کنیم.
ما این کار را با موارد زیر انجام می دهیم:
make clean
با این کار می توانیم چیزهای کاملاً اساسی در مورد ساختن پرونده ها و اینکه اگر بخواهیم بعضی موارد را خودکار کنیم ، می توانند کاملاً مفید باشند ، یاد بگیریم.
بدیهی است که شما می توانید یک پرونده بزرگتر و پیچیده تر بسازید ، اما این یک نمونه صرفاً برای تازه واردان است (من خودم را نیز شامل می شوم) که با نحوه کار این کار آشنا می شوند.
6 نظر ، نظر خود را بگذارید
مقاله بسیار جالبی یک سوال ... آنچه شما "متغیرها" می نامید توابع یا روش ها نخواهد بود؟
در واقع ، بله دوست من ، ممنون از تصحیح.
به سلامتی! 🙂
عالی ، امیدوارم به حفاری ادامه دهید.
خوب ، نه یک چیز و نه چیز دیگر ، https://www.gnu.org/software/make/manual/make.html، "اهداف" هستند
قوانین
امیدوارم که آنها به توضیح مواردی از این قبیل ، "همه جا و ابتدایی" ، در مورد راه اندازی روزانه لینوکس ادامه دهند ، که هیچ کس هرگز با همان شور و شوق نحوه تبلیغ این "مزایا و عملکرد" توضیح نمی دهد.