كيفية استخدام قالب دليل فرعي كماكي على ذلك؟
-
07-07-2019 - |
سؤال
وأنا بدأت لمعرفة كيو تي. انا تتحرك من ستوديو العالم البصرية وأنا أبحث عن وسيلة لتنظيم هيكل بلدي المشروع باستخدام كماكي. لقد وجدت القالب 'دليل فرعي' ولكن لدي وقتا الصعب فهم ذلك.
وبلادي بنية المشروع يبدو مثل هذا:
project_dir/
main.cpp
project.pro
logic/
logic.pro
some logic files
gui/
gui.pro
gui files
وبي <م> project.pro م> يبدو مثل هذا
TEMPLATE = subdirs
SUBDIRS = logic \
gui
SOURCES += main.cpp
في .pro م> ملفات لالدلائل لدي المناسبة <م> مصادر م>، <م> HEADERS م> و <م> الموارد م> متغيرات مجموعة.
ومن فضلك قل لي ما <م> الهدف م>، <م> TEMPLATE م> وغيرها من القيم الضرورية وأود أن وضع في الملفات <م> .pro م>.
وبالإضافة إلى ذلك، هناك بعض جيدة كماكي تعليمي غير رسمي واحد؟
المحلول
وبالإضافة إلى تعليق الشاعر المتجول في ، أود أن أشير أن الهدف SUBDIRS
هو جيد فقط لتحديد الدلائل. لذلك، خط اضافي الخاص بك
SOURCES += main.cpp
وفي ملف project.pro الخاص بك هو غير صحيح، ومن المرجح أن تفشل في بناء ملف MAIN.CPP الخاص بك، في أسوأ الأحوال. في أحسن الأحوال، كماكي سيرفض تحليل الملف، لأنه لديه مواصفات متضاربة في ذلك.
ولقد استعملت قالب SUBDIRS
عدة مرات، وما أبلت بلاء حسنا إذا كنت تستطيع بناء الأجزاء في المكتبات أكثر أو أقل مستقلة، على ما يبدو مثل لديك مع المنطق واجهة المستخدم الرسومية المنفصلة. هنا هي طريقة واحدة للقيام بذلك:
project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cpp
وproject.pro:
TEMPLATE = subdirs
SUBDIRS = logic \
gui
# build must be last:
CONFIG += ordered
SUBDIRS += build
وcommon.pri:
#Includes common configuration for all subdirectory .pro files.
INCLUDEPATH += . ..
WARNINGS += -Wall
TEMPLATE = lib
# The following keeps the generated files at least somewhat separate
# from the source files.
UI_DIR = uics
MOC_DIR = mocs
OBJECTS_DIR = objs
والمنطق / logic.pro:
# Check if the config file exists
! include( ../common.pri ) {
error( "Couldn't find the common.pri file!" )
}
HEADERS += logic.h
SOURCES += logic.cpp
# By default, TARGET is the same as the directory, so it will make
# liblogic.a (in linux). Uncomment to override.
# TARGET = target
واجهة المستخدم الرسومية / gui.pro:
! include( ../common.pri ) {
error( "Couldn't find the common.pri file!" )
}
FORMS += gui.ui
HEADERS += gui.h
SOURCES += gui.cpp
# By default, TARGET is the same as the directory, so it will make
# libgui.a (in linux). Uncomment to override.
# TARGET = target
وبناء / build.pro:
TEMPLATE = app
SOURCES += main.cpp
LIBS += -L../logic -L../gui -llogic -lgui
# Will build the final executable in the main project directory.
TARGET = ../project
نصائح أخرى
ويمكنك استخدام subdirs
إذا المجلدات المنطق واجهة المستخدم الرسومية في الواقع repesent نوعا من الهدف، على سبيل المثال. مكتبة، التي يمكن أن يبنى بشكل مستقل من أي شيء آخر. إذا كان هذا هو الحال بعد ذلك مجرد استخدام
TEMPLATE = lib
TARGET = logic
CONFIG += dll
وفي logic.pro.
إذا لم تكن أهداف مستقلة ولكنها ليست سوى مجلدات موجودة لتنظيم ملفات مصادر ثم يمكنك فقط استخدام ملف .pri في كل بدلا من ذلك وإدراجها ضمن .pro باستخدام
include(logic/logic.pri)
include(gui/gui.pri)
وفقط تذكر أن مسارات الملفات في ملفات .pri قريبة إلى ملف .pro و<م> لا م> و.pri. راجع للشغل، واستخدام ملف .pri هو اختياري وأنت لا تزال قائمة الملفات في هذه المجلدات مباشرة في ملف .pro. الملف .pri فقط إلى أن يجعل من بت أكثر إتقانا ويساعد على إبقاء ملف .pro أقصر.