如何使用QMAKE的子目录模板?(How to use QMake's subdirs te

2019-07-17 21:19发布

我开始学习Qt。 我从Visual Studio世界移动和我在寻找一种方式使用QMAKE组织我的项目结构。 我已经找到了“子目录”模板,但我有相当很难理解它。

我的项目结构如下所示:

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教程比官方的另外一个?

Answer 1:

除了游吟诗人的评论 ,我想指出的是, 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.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 / 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


Answer 2:

您可以使用subdirs如果逻辑和GUI文件夹实际上参阅下文某种目标,例如。 图书馆,可建别的独立。 如果是这样的话那么就使用

TEMPLATE = lib
TARGET = logic
CONFIG += dll

在logic.pro。

如果它们不是独立的目标,但只是存在于组织源文件夹,然后你可以只使用一个.pri文件中的每个而不是使用包括他们的.pro内

include(logic/logic.pri)
include(gui/gui.pri)

只要记住,在.pri文件中的路径是相对于.pro文件,而不是 .pri。 BTW,使用.pri文件是可选的,因为你仍然可以列出直接在.pro文件在这些文件夹中的文件。 该.pri文件只是使它的是位整洁,并有助于保持.pro文件短。



文章来源: How to use QMake's subdirs template?
标签: qt qmake subdirs