如何使用 QMake 的 subdirs 模板? [英] How to use QMake's subdirs template?

查看:44
本文介绍了如何使用 QMake 的 subdirs 模板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始学习 Qt.我正在离开 Visual Studio 世界,我正在寻找一种使用 QMake 组织项目结构的方法.我找到了subdirs"模板,但我很难理解它.

I'm starting to learn Qt. I'm moving from the Visual Studio world and I am looking for a way to organize my project's structure using QMake. I've found the 'subdirs' template but I have quite a hard time understanding it.

我的项目结构如下:

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 文件中,我设置了适当的 SOURCESHEADERSRESOURCES 变量.

In the .pro files for the subdirectories I have appropriate SOURCES, HEADERS and RESOURCES variables set.

请告诉我应该在 .pro 文件中设置什么 TARGETTEMPLATE 和其他必要的值.

Please tell me what TARGET, TEMPLATE and other necessary values I should set in the .pro files.

另外,除了官方教程之外,还有其他好的 QMake 教程吗?

Also, is there some good QMake tutorial other than the official one?

推荐答案

除了 Troubadour 的评论,我会注意到 SUBDIRS 目标仅适用于指定子目录.因此,您额外的

In addition to Troubadour's comment, I would note that the SUBDIRS target is only good for specifying subdirectories. Therefore, your extra line of

SOURCES += main.cpp

在您的 project.pro 文件中是不正确的,最坏的情况是可能无法构建您的 main.cpp 文件.充其量,qmake 将拒绝解析该文件,因为其中包含相互冲突的规范.

in your project.pro file is incorrect, and will likely fail to build your main.cpp file, at worst. At best, qmake will refuse to parse the file, since it has conflicting specifications in it.

我已经多次使用 SUBDIRS 模板,如果您可以将部件构建到或多或少的独立库中,它会很好,显然就像您将逻辑和 gui 分开一样.这是执行此操作的一种方法:

I've used the SUBDIRS template a few times, and it does well if you can build parts into more-or-less independent libraries, apparently like you have with the logic and the gui separate. Here is one way to do this:

project_dir/
-project.pro
-common.pri
-logic/
----logic.pro
----some logic files
-gui/
----gui.pro
----gui files
-build/
----build.pro
----main.cpp

project.pro:

project.pro:

TEMPLATE = subdirs
SUBDIRS = logic \
          gui

# build must be last:
CONFIG += ordered
SUBDIRS += build

common.pri:

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/logic.pro:

logic/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:

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/build.pro:

build/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

这篇关于如何使用 QMake 的 subdirs 模板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆