4-1- ایجاد یک Makefile لینوکس

یک makefile لینوکس، ابزاری برای کامپایل کردن یک یا چند کد منبع با یک فرمان واحد و ساختن فایل اجرایی است. بیایید در مورد یک پروژه ساده برای نشان دادن قابلیت‌های Makefile صحبت کنیم.

می‌خواهیم برای جمع دو عدد کد بزنیم. در ابتدا برای جمع یک کلاس می‌نویسیم. وقتی با کلاس‌های C++ کار می‌کردیم، اعلان و تعریف کلاس را در کد منبع اصلی نوشتیم. رویکرد دیگر این است که در یک سربرگ و فایل cpp کلاس را اظهار و تعریف کنیم. سپس این سربرگ را در کد اصلی قرار داده تا از آن کلاس استفاده کنیم. این روش در شکستن پروژه بزرگ به چند مدول مفید است. بنابراین، پروژه ما سه فایل دارد.

  • cpp: کد اصلی که قصد ساختن آنرا داریم.
  • h : فایل سربرگ کلاس add که دربردارنده اعلان کلاس است.
  • cpp: این فایل دارای تعریف کامل کلاس add است.

استفاده از نام کلاس به عنوان نام سربرگ و فایل cpp ایده خوبی است. در اینجا قصد ایجاد کلاس add را داریم پس نام سربرگ add.h و نام فایل add.cpp خواهد بود.

فهرست‌های 2-8، 2-9 و 2-10 برای هر فایل کد مربوطه را فراهم می‌کند.

فهرست 2-8. add.h

#include <iostream>

class add

{

public:

int compute(int no_1,int no_2);

};

فهرست 2-9 add.cpp

#include “add.h”

int add::compute(int a, int b)

{

return(a+b);

}

فهرست 2-10  main.cpp

#include “add.h”

using namespace std;

int main()

{

add obj;

int result = obj.compute(43,34);

cout<<“The Result:=”<<result<<endl;

return 0;

}

در main.cpp (فهرست 2-10 را ببینید)، فایل هدر add.h را برای دسترسی به کلاس add اضافه کرده‌ایم. یک شیء از کلاس add به‌نام obj ایجاد کرده، دو عدد را به تابع compute منتقل کرده و نتیجه را چاپ می‌کنیم.

کد فهرست 2-10 را با استفاده از دستور زیر کامپایل و اجرا می‌کنیم.

$ g++ add.cpp main.cpp -o main

$ ./main

دستور g++ برای کامپایل یک کد منبع ساده استفاده می‌شود، اما اگر بخواهیم چندین کد منبع را کامپایل کنیم، دستور g++ چندان خوشایند نیست. makefile لینوکس راه حلی برای کامپایل چندین کد منبع با یک فرمان واحد است. فهرست 2-11 چگونگی نوشتن یک makefile برای کامپایل کد را نشان می‌دهد. کد فهرست 2-11 را به عنوان makefile ذخیره کنید.

فهرست 2-11. یک makefile لینوکس

CC = g++

CFLAGS = -c

SOURCES = main.cpp add.cpp

OBJECTS = $(SOURCES:.cpp=.o)

EXECUTABLE = main

all: $(OBJECTS) $(EXECUTABLE)

$(EXECUTABLE) : $(OBJECTS)

$(CC) $(OBJECTS) -o $@.cpp.o: *.h

$(CC) $(CFLAGS) $< -o $@clean :

-rm -f $(OBJECTS) $(EXECUTABLE).PHONY: all clean

پس از ذخیره کد فهرست 2-11 به عنوان یک فایل makefile، باید دستور زیر را برای ساخت آن اجرا کنید.

$ make

این دستور کد منبع را همانطور که در شکل 2-27 نشان داده شده، می‌سازد.

شکل ‏2‑27: خروجی دستور make

پس از ساخت با دستور make، برنامه را با استفاده از دستور زیر می‌توانید اجرا کنید. نتایج در شکل 2-28 نشان داده شده است.

$ . /main

شکل ‏2‑28: خروجی کد main

شما میتوانید در مورد makefiles در وب[39] اطلاعات بیشتری کسب کنید

[39] www.bogotobogo.com/cplusplus/gnumake.php