پروژه کیوتی و تنظیمات qmake
هنگامی که یک پروژه را در کیوت می سازیم بطور پیشفرض این برنامه توسط ابزاری به نام qmake اجرا میگردد. در این مطلب تنظیمات این ابزار را که در فایلی با نام .pro صورت می گیرد بررسی میکنیم.
مقدمه و نگاه کلی به ابزار qmake :
از ابزار qmake میتوان برای پروژه هایی خارج از محیط کیوتی برای تولید نرم افزار های چند سکویی استفاده کرد . مثلا می توان از این ابزار در ویژوال استودیو نیز استفاده کرد. اما در این مطلب ما استفاده از این ابزار را در کیوتی کریتور بررسی میکنیم.
این ابزار به شما قدرت مدیریت در ساخت یک نرم افزار را میدهد که به سیتم بگویید میخواهید از چه پلاگین ها و کتابخانه ها و کامپوننت هایی استفاده کنید.
وقتی شما یک پروژه را قرار است با qmake بسازید به یک فایل به نام " pro. "
نیاز دارید در این فایل تمامی ویژگی های پروژه شما شرح داده می شود و لیستی از هدر فایل ها و سورس های برنامه شما همچنین اطلاعتی مانند اینکه که در این پروژه قرار است از چه پلاگین هایی استفاده کنید داده می شود.
ویژگی ها و دستورات فایل pro. :
اگر یک پروژه جدید در کیوتی بسازید متوجه می شوید خود کیوت یک فایل به این نام ساخته است و بطور پیش فرض تعدادی از دستورات مورد نیاز را در آن نوشته است بطور مثال :
HEADERS = mainwindow.h paintwidget.h
در خط بالا گفته است که لیست هدرفایل ها در این پروژه شامل دو فایل mainwindow.h , paintwidget.h می شود. همانطور که مشخص است این فایل یک سری متغییر ها و کلمات کلیدی را دا است به طور مثال HEADER یک متغییر است که اسامی و آدرس های فایل های هدر را در خود نگه می دارد.
در جدول زیر لیستی از متغییر هایی که بیشتر استفاده می شود را می بینید:
نام متغییر | توضیحات و محتوا |
---|---|
CONFIG | این متغییر سراری میتواند لیستی از کانفیگ ها و تنظیماتی که نیاز است در این پروژه استفاده شود را در خود نگاه می دارد. |
DESTDIR | دایرکتوری و مسیری که فایل باینری و با قابل اجرا باید در آنجا قرار گیرد |
FORMS | شامل لیستی از فرم ها و رابط های کاربری .ui هایی که در این پروژه هستند. |
HEADERS | لیستی از هدر فایل ها با همان فایل های .h مورد استفاده در برنامه. |
QT | شامل لیستی از مدول های کیوتی که در این پروژه استفاده شده است. |
RESOURCES | لیستی از ریسور های مورد استفاده در برنامه ریسورس یک فایل با پسوند .qrc می باشد که معمولا آدرس تصاویر و رسانه را در آن ذخیره میکنند. مراجعه شود به : آموزش ریسور ها |
SOURCES | لیستی از سورس های برنامه که چون پروژه های ما از نوع سی پلاس پلاس است معمولا پسوند .cpp را دارند. |
TEMPLATE | تمپلیت برای این منظور استفاده می شود که نتیجه پردازش خروجی یک برنامه یا پلاگین یا کتابخانه باشد. |
همچنین کامنت ها را در این فایل با علامت # شروع می شوند بطور مثال :
# Project created by QtCreator 2020-01-23T16:55:28
CONFIG :
این متغییر ویژگی های پروژه و کامپیالر را مشخص می کند. برای مثال اگر دروژه از نسخه c++11 استفاده میکنیم باید این مقدار را به متغییر کانفیگ بیافزایم. مانند زیر :
CONFIG +=c++11
همانطور که می بیند از عبارت config += استفاده کردیم به این دلیل که این تنظیم را به لیست قبلی و تنظیماتی که خود محیط کیوت مشخص کرده اصافه کنیم. در زیر مهم ترین صفت هایی که می توان به آن نسبت داد شرح داده شده است:
Option | Description |
---|---|
release | The project is to be built in release mode. If debug is also specified, the last one takes effect. |
debug | The project is to be built in debug mode. |
debug_and_release | The project is prepared to be built in both debug and release modes. |
debug_and_release_target | This option is set by default. If debug_and_release is also set, the debug and release builds end up in separate debug and release directories. |
build_all | If debug_and_release is specified, the project is built in both debug and release modes by default. |
autogen_precompile_source | Automatically generates a .cpp file that includes the precompiled header file specified in the .pro file. |
ordered | When using the subdirs template, this option specifies that the directories listed should be processed in the order in which they are given.Note: The use of this option is discouraged. Specify dependencies as described in the SUBDIRS variable documentation. |
precompile_header | Enables support for the use of precompiled headers in projects. |
precompile_header_c (MSVC only) | Enables support for the use of precompiled headers for C files. |
warn_on | The compiler should output as many warnings as possible. If warn_off is also specified, the last one takes effect. |
warn_off | The compiler should output as few warnings as possible. |
exceptions | Exception support is enabled. Set by default. |
exceptions_off | Exception support is disabled. |
rtti | RTTI support is enabled. By default, the compiler default is used. |
rtti_off | RTTI support is disabled. By default, the compiler default is used. |
stl | STL support is enabled. By default, the compiler default is used. |
stl_off | STL support is disabled. By default, the compiler default is used. |
thread | Thread support is enabled. This is enabled when CONFIG includes qt , which is the default. |
c99 | C99 support is enabled. This option has no effect if the compiler does not support C99, or can’t select the C standard. By default, the compiler default is used. |
c11 | C11 support is enabled. This option has no effect if the compiler does not support C11, or can’t select the C standard. By default, the compiler default is used. |
strict_c | Disables support for C compiler extensions. By default, they are enabled. |
c++11 | C++11 support is enabled. This option has no effect if the compiler does not support C++11, or can’t select the C++ standard. By default, support is enabled. |
c++14 | C++14 support is enabled. This option has no effect if the compiler does not support C++14, or can’t select the C++ standard. By default, the compiler default is used. |
c++1z | C++17 support is enabled. This option has no effect if the compiler does not support C++17, or can’t select the C++ standard. By default, support is disabled. |
c++17 | Same as c++1z. |
c++2a | C++2a support is enabled. This option has no effect if the compiler does not support C++2a, or can’t select the C++ standard. By default, support is disabled. |
c++latest | Support for the latest C++ language standard is enabled that is supported by the compiler. By default, this option is disabled. |
strict_c++ | Disables support for C++ compiler extensions. By default, they are enabled. |
depend_includepath | Appending the value of INCLUDEPATH to DEPENDPATH is enabled. Set by default. |
lrelease | Run lrelease for all files listed in TRANSLATIONS and EXTRA_TRANSLATIONS. If embed_translations is not set, install the generated .qm files into QM_FILES_INSTALL_PATH. Use QMAKE_LRELEASE_FLAGS to add options to the lrelease call. Not set by default. |
embed_translations | Embed the generated translations from lrelease in the executable, under QM_FILES_RESOURCE_PREFIX. Requires lrelease to be set, too. Not set by default. |
create_libtool | Create a libtool .la file for the currently built library. |
create_pc | Create a pkg-config .pc file for the currently built library. |
no_batch | NMake only: Turn off generation of NMake batch rules or inference rules. |
skip_target_version_ext | Suppress the automatic version number appended to the DLL file name on Windows. |
suppress_vcproj_warnings | Suppress warnings of the VS project generator. |
windeployqt | Automatically invoke windeployqt after linking, and add the output as deployment items. |
dont_recurse | Suppress qmake recursion for the current subproject. |
no_include_pwd | Do not add the current directory to INCLUDEPATHS. |
TEMPLATE :
این متغییر برای این منظور استفاده می شود که این پروژه قرار است چه چیزی را بسازد یک برنامه یا یک پلاگین که بطور پیش فرض قرار است یک برنامه را بسازد در این صورت مقدار app را به آن نسبت می دهیم:
TEMPLATE = app
تمپلیت میتواند شامل موارد زیر باشد:
app , lib , aux , subdirs , vcapp , vclib , vcsubdirs
TARGET :
این متغییر اسم پیش فرض برنامه را در خود نگه می دارد برای مثال :
TARGET = zxWinApp
FORMS :
همانطور که قبلا گفته شد از این متغییر برای نگه داشت نام فر هما یا همان فایلهای ui استفاده می شود.بطور مثال:
FORMS = mydialog.ui \
mywidget.ui \
myconfig.ui
HEADERS , SOURCE :
از این دو متغییر برای نگهداری سورسها و هدر هایی که برای این برنامه نوشتید بکار می رود. بطور مثال:
HEADERS = myclass.h \
login.h \
mainwindow.h
SOURCES = myclass.cpp \
login.cpp \
mainwindow.cpp
RESOURCES :
برای مشخص کردن ریسورس فایلها در در این آموزش نحوه استفاده از ریسورس فایل ها و کار برد آن ها گفته شده است.
RESOURCES = application.qrc
مشخص کردن کتابخانه ها و پلاگین های کیوت که در برنامه استفاده شده:
برای استفاده از کتابخانه های کیوت نیز در qmake باید در این فایل مشخص کنیم که چه مدول ها و کتابخانه هایی را استفاده کردیم برای این منظور از متغییر QT استفاده می کنیم.برای مثال :
QT += network xml
در خط بالا گفته شده که از کتابخانه هایی که برای کار با شبکه هستند و همچنین کتابخانه هایی برای کار با xml در برنامه استفاده شده است.
برخی دیگر از این مقادیر عبارت اند از:
#استفاده از هسته کیوت همان چیزی که در کیوتی همیشه با آن سرو کار داریم: QT += core
#استفاده از رابط کاربری کیوتی کریتور در پروژه که شامل ui فایلها و فرم های آن می شود.QT += GUI
#استفاده از کلاس های QWidget و همه کلاس هایی که مشخصات این کلاس را به ارث می برند. . .
QT += widgets
# برای کار با کلاس هایی نظیر QSound, QtMultimedia و.. عبارت دوم برای کار با ویجدتهای مالتی مدیا می باشد: QT += multimedia multimediawidgets
#برای استفاده از qml و qt quick در برنامه
QT += qml quick
#برای استفاده از quickcontrols 2 در برنامه های qtQuick :
QT += quickcontrols2
#برای کار با دیتا بیس ها به زبان sql مانند دیتا بیس sqlite , mySQL , … [آموزش sqlite ]
QT += sql
#برای استفاده از کاتبخانه هایی برای پرینت گرفتن مانند QPrinter :QT += printsupport
#برای کار با شبکه و کلاس هایی که برای ارتباط و استفاده در شبکه طراحی شده اند مانند QTcpServer,QNetworkRequest ,… :QT += network
چند متغییر کاربردی یگر :
از متغییر های زیر برای مشخص کردن مشخصات و اطلاعات نهایی فایل ساخته برای ویندوز استفاده میشود که شامل نام شرکت تولید کننده نرم افزار ،حق کپی و نشر،توضیحات و شماره نسخه این نرم افزار می باشد :
VERSION = 1.2.0.0
QMAKE_TARGET_COMPANY = MRZX.ir
QMAKE_TARGET_DESCRIPTION = " This program developed by Reza.Ahmadi "
QMAKE_TARGET_COPYRIGHT = "Copyright 2020 by MRZX.ir"
و برای مشخص کردن آیکون نرم افزار میتوان مانند زیر عمل کرد :
ICON = logo.ico
win32: RC_ICONS = logoWin32.ico
نکته : در بالا از کلمه کلیدی win32 برای مشخص کردن اینکه نرم افزار در سیستم عامل ویندوز چه ایکونی را داشته باشد استفاده شده. بطور مثال برای یونیکیس از کلمه unix استفاده می شود:
win32:VERSION = 1.2.3.4 # major.minor.patch.build
else:VERSION = 1.2.3 # major.minor.patch
برای اندروید نیز از کلم کلیدی android استفاده می شود. که سایر پست ها به مقوله اندروید در کیوت می پردازیم.
در این مقاله راجبه qmake مطالبی گرد آوری شده بود منبع ان رفرنس های خود سایت کیوت بود برای اطلاعات بیشتر به آدرس های زیر مراجعه کنید:
دیدگاهتان را بنویسید