Troubadour's comment'a ek olarak, SUBDIRS
hedefinin yalnızca alt dizinleri belirtmek için uygun olduğunu unutmayın. Bu nedenle, project.pro dosyasında
SOURCES += main.cpp
sizin fazladan satır yanlıştır ve büyük olasılıkla en kötü ihtimalle, sizin main.cpp dosyasını oluşturmak için başarısız olur. En iyi ihtimalle, qmake, dosyayı çelişen özellikleri olduğundan dosyayı ayrıştırmayı reddeder.
SUBDIRS
şablonunu birkaç kez kullandım ve çok az bağımsız kitaplıklara, örneğin mantık ve gui ile yaptığınız gibi parçaları oluşturabilirseniz iyi olur.
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
yaygın İşte bunu yapmanın yollarından biridir.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
mantık/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/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
derlemesi/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
project.pro adresindeki SOURCES yönergesi hakkında iyi bir nokta. Bunu tamamen özledim. – Troubadour
Bu kapsamlı yanıt için teşekkürler. Öğrenmeye başlamak için iyi bir nokta. – zarzych
"Sipariş" kelimesinin global olduğu izlenimim. İlk iki kütüphaneyi aynı anda yapmak gibi görünmüyor. –