我开始学习Qt了。我离开了Visual Studio世界,正在寻找一种使用QMake来组织我的项目结构的方法。我找到了“subdirs”模板,但我很难理解它。
我的项目结构如下所示:
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文件中,我设置了适当的源、头文件和资源变量。
请告诉我应该在.pro文件中设置什么目标、模板和其他必要的值。
另外,除了官方的QMake教程之外,还有什么好的教程吗?
发布于 2009-09-13 14:21:11
除了Troubadour's comment之外,我还要注意到SUBDIRS目标只适用于指定子目录。因此,您的额外行
SOURCES += main.cpp在您的project.pro文件中是不正确的,并且在最坏的情况下很可能无法构建您的main.cpp文件。在最好的情况下,qmake将拒绝解析该文件,因为它包含冲突的规范。
我已经用过SUBDIRS模板几次了,如果你能把各个部分构建到或多或少独立的库中,它就能做得很好,就像你把逻辑和gui分开一样。以下是一种方法:
project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cppproject.pro:
TEMPLATE = subdirs
SUBDIRS = logic \
gui
# build must be last:
CONFIG += ordered
SUBDIRS += buildcommon.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 = objslogic/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 = targetgui/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 = targetbuild/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发布于 2009-09-13 13:53:52
如果逻辑和图形用户界面文件夹实际上返回了某种类型的目标,则可以使用subdirs。一个库,可以独立于其他任何东西构建。如果是这样,那么只需使用
TEMPLATE = lib
TARGET = logic
CONFIG += dll在logic.pro中。
如果它们不是独立的目标,而只是用来组织源文件的文件夹,那么您可以在每个文件夹中使用一个.pri文件,并使用以下命令将它们包含在.pro中
include(logic/logic.pri)
include(gui/gui.pri)只需记住,.pri文件中的文件路径是相对于.pro文件而不是.pri的。顺便说一句,由于您仍然可以直接在.pro文件中列出这些文件夹中的文件,因此.pri文件的使用是可选的。.pri文件只是让它变得更整洁,并有助于保持.pro文件更短。
https://stackoverflow.com/questions/1417776
复制相似问题