كيفية استخدام قالب دليل فرعي كماكي على ذلك؟

StackOverflow https://stackoverflow.com/questions/1417776

  •  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 أقصر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top