اموزش QT جلسه دوم

<!–

خوب در این قسمت میخوام نمونه کدی رو که در قسمت قبل کامپایل و اجرا کردیم بیشتر تشریح کنم:

کدمون اینطوری بود:

#include <QApplication>

#include <QWidget>

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

QWidget window;

window.resize(250, 150);

window.setWindowTitle(“Simple example”);

window.show();

return app.exec();

}

#include <QApplication>

#include <Qwidget>

این دو قطعه کد کتابخونه های ضروری برای اجرای برناممون رو در کدمون درج میکنه

QApplication app(argc, argv);

این قطعه کد در تمام برنامه های QT البته بجز کنسولیاش باید باشه و شیع کلی برنامه رو مشخص میکنه

QWidget window;

این قطعه کد ابزارک (Widget) اصلی برناممون رو به اسم window تعریف میکنه.

window.resize(250, 150);

window.setWindowTitle(“Simple example”);

window.show();

کدهای بالا اول ابزارکمون رو ریساز میکنه و عرض و ارتفاشو تنظیم میکنه بعد عنوان ابزارکمون که در اینجا همون پنجره اصلیمون رو تنظیم میکنه و بعد اونو نمایش میده.

return app.exec();

و در اخر توسط این کد حلقه اصلی برنامه شروع میشه.دوستانی که برنامه های c حساس به رویداد نوشتن میدونن که برای اینکه برنامه مدام رخ دادن رویدادها رو چک کنه باید در یک حلقه بی نهایت قرار بدیمش ، من فکر میکنم قطعه کد بالا یه همچین روالی رو شروع میکنه!

اینها چیزایی بود که من از این کدها پیدا کردم و شاید توضیحات خیلی بیشتری داشته باشن!

در اخرین مورد میخوام راجع به چیستی qmake که باهاش برناممون رو کامپایل کردیم بحث کنم:

qmake ابزاری که شرکت Trolltech برای اسان تر کردن روند تولید برنامه در همه پلتفرم ها ایجاد کرده!

qmake عمل ساختن makefile برای پروژتون رو اتوماتیک کرده انچنان که فقط با چند خط اطلاعات میتونه makefile بسازه!

—————————————————————————————————————————————————–

برای کسانی که makefile روند کلی کامپایل رو نمیدونن متن زیر رو میارم:

کامپایلر

کامپایلرها وظیفه تبدیل زبانهای سطح بالا و قابل درک برای انسان را به سطح پایین ترین زبان، یعنی زبان ماشین به عهدا دارند.

معمولا (تقریبا همیشه!) پروژه های نرم افزاری از بیش از یک فایل تشکیل شده اند که هر کدام بخشی از متن برنامه یا Source Code را در بر دارد. شما باید ابتدا هر فایل نوشته شده را جداگانه به وسیله کامپایلر به زبان ماشین تبدیل کنید. اصطلاحا به فایلهایی که در این مرحله تولید می شود، فایل Object می گویند. محتوای لین فایلها به زبان ماشین است، اما هنوز قابل اجرا توسط کامپیوتر نیستند! چرا؟ چون هر کدام از آن فایلها یا وابستگیهایی در فایلهای دیگر دارند که در این وضعیت برای سیستم غیر قابل تشخیص است، یا اساسا به تنهایی مفهومی ندارند که قابل اجرا باشند.مثلا ممکن است یکی از آنها حاوی مجموعه ای از دستورات (اصطلاحا تابع) باشد که روی ورودی خود پردازش خاصی انجام می دهند و نتیجه را برمی گردانند. اما این توابع زمانی مفید هستند که از جایی فراخوانی شوند و احتمالا فراخوانی تابع مورد نظر ما هم از داخل یکی از فایلهای Object دیگر صورت می گیرد.

در اینجاست که شما باید با کمک لینکر آن فایلهای Object را به ترتیب مناسب به هم پیوند دهید تا در نهایت به یک فایل اجرایی دست پیدا کنید.

یک مثال عملی

فرض کنید برنامه ای به زبان C در یک فایل به نام main.c نوشته اید و حالا می خواهید آن را به فایل قابل اجرا توسط کامپیوتر تبدیل کنید. این کار به سادگی و در دو خط دستور (که می شود آنها را در یک خط هم خلاصه کرد) قابل اجرا است:

$ gcc -c main.c

$ gcc -o main main.o

دستور اول از فایل C به نام main.c یک فایل Object به نام main.o می سازد و دستور دوم نیز از فایلmain.o یک فایل اجرایی به نام main می سازد که حالا دیگر می توانید آن را اجرا کنید.

اما حالا فرض کنید که فایل main.c وابستگیهایی هم به دو فایل دیگر به نامهای dep.c و dep.h داشته باشد:

$ gcc -c main.c

$ gcc -c dep.c

$ gcc -o main main.o dep.o

می بینید که یک مرحله به مراحل کامپایل برنامه اضافه شد.

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

به همه اینها اضافه کنید گزینه های خط دستور کامپایلر را که گاهی کار کامپایل از خط دستور را به فرایندی بسیار پیچیده تبدیل می کنند.

حالا هربار که تغییراتی دربرنامه بدهید، باید همه کارها را از اول انجام دهید. یا به اندازه کافی فصفر بسوزانید و به خاطر داشته باشد که هر بار در کدام فایلها تغییر داده اید تا فقط آنها را کامپایل کنید و کمی وقت کمتری صرف کنید! آیا راه بهتری نیست؟

Makefile

چقدر خوب می شد اگر می توانستید همه این دستورات کامپایل را فقط یک بار تایپ کنید. خبر خوب! می توانید همه این دستورات را در فایل که به Makefile معروف است قرار دهید و برنامه ای به نام make را اجرا کنید تا آن برنامه خودش از روی Makefile برایتان بقیه کارها را انجام دهد و خروجی نهایی قابل اجرا را بسازد.

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

به خصوص اگر شما برنامه نویس نباشید، برایتان قابل توجه خواهد بود که مجبور نیستید هربار اینهمه دستورات عجیب و غریب را تایپ کنید و تنها با تایپ دستور make زندگی برایتان آسان می شود.

make

همانطور که اشاره شد، make برنامه ای است که از روی Makefile کار کامپایل پروژه را انجام می دهد. در کل دو مزیت عمده می توان برای make در نظر گرفت:

۱/همانطور که قبلا هم گفتم با استفاده از Makefile کارهای سخت (نوشتن دستورات پیچیده کامپایل) فقط یکبار انجام می شود.

۲/make از روی برچسب زمانی فایلهای سورس و Object تشخیص می دهد که کدامیک از فایلها نیاز به دوباره کامپایل شدن دارند و به این ترتیب از کامپایل مجدد و غیر ضروری فایلهایی که از زمان آخرین کامپایل تغییری نکرده اند، جلوگیری می شود. چراکه فرایندکامپایل به ویژه در کامپیوترهای قدیمی و با پروژه های بزرگ کاری بسیار وقت گیر است.

make بعد از فراخوانی به ترتیب دنبال یک فایل با یکی از نامهای GNUmakefile، makefile یا Makefile می گردد تا دستورات کامپایل را از داخل آن خوانده و اجرا کند.

برگرفته از سايت :shabaneh.ir

—————————————————————————————————————————————————————-

از qmake میتونیم در اکثر پروژهای نرم افزاری استفاده کنیم و لزوما نباید با Qt باشن.

برای بدسا اوردن اطلاعات بیشتر راجع به qmake به اینجا مراجعه کنید.

3 دیدگاه برای «اموزش QT جلسه دوم»

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>