پروژه کیوتی و تنظیمات qmake - وب سایت رضا احمدی

پروژه کیوتی و تنظیمات qmake

پروژه کیوتی و تنظیمات 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 += استفاده کردیم به این دلیل که این تنظیم را به لیست قبلی و تنظیماتی که خود محیط کیوت مشخص کرده اصافه کنیم. در زیر مهم ترین صفت هایی که می توان به آن نسبت داد شرح داده شده است:

OptionDescription
releaseThe project is to be built in release mode. If debug is also specified, the last one takes effect.
debugThe project is to be built in debug mode.
debug_and_releaseThe project is prepared to be built in both debug and release modes.
debug_and_release_targetThis 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_allIf debug_and_release is specified, the project is built in both debug and release modes by default.
autogen_precompile_sourceAutomatically generates a .cpp file that includes the precompiled header file specified in the .pro file.
orderedWhen 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_headerEnables 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_onThe compiler should output as many warnings as possible. If warn_off is also specified, the last one takes effect.
warn_offThe compiler should output as few warnings as possible.
exceptionsException support is enabled. Set by default.
exceptions_offException support is disabled.
rttiRTTI support is enabled. By default, the compiler default is used.
rtti_offRTTI support is disabled. By default, the compiler default is used.
stlSTL support is enabled. By default, the compiler default is used.
stl_offSTL support is disabled. By default, the compiler default is used.
threadThread support is enabled. This is enabled when CONFIG includes qt, which is the default.
c99C99 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.
c11C11 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_cDisables support for C compiler extensions. By default, they are enabled.
c++11C++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++14C++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++1zC++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++17Same as c++1z.
c++2aC++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++latestSupport 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_includepathAppending the value of INCLUDEPATH to DEPENDPATH is enabled. Set by default.
lreleaseRun 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_translationsEmbed the generated translations from lrelease in the executable, under QM_FILES_RESOURCE_PREFIX. Requires lrelease to be set, too. Not set by default.
create_libtoolCreate a libtool .la file for the currently built library.
create_pcCreate a pkg-config .pc file for the currently built library.
no_batchNMake only: Turn off generation of NMake batch rules or inference rules.
skip_target_version_extSuppress the automatic version number appended to the DLL file name on Windows.
suppress_vcproj_warningsSuppress warnings of the VS project generator.
windeployqtAutomatically invoke windeployqt after linking, and add the output as deployment items.
dont_recurseSuppress qmake recursion for the current subproject.
no_include_pwdDo 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 مطالبی گرد آوری شده بود منبع ان رفرنس های خود سایت کیوت بود برای اطلاعات بیشتر به آدرس های زیر مراجعه کنید:

https://doc.qt.io/qt-5/qmake-project-files.html

https://doc.qt.io/qt-5/qmake-variable-reference.html

دیدگاهتان را بنویسید

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

دیدگاه های ثبت شده

تا کنون دیدگاهی ثبت نشده است.