继续qmake,本文主题:低调的 TEMPLATE = subdirs
非常非常常用的一个东西,可是manual中却介绍的很少,太低调了。在编写包含多可执行文件、库、插件 的程序时,一直不敢相信subdirs的能力,以至于曾一度想转到cmake之下。
Manual
Manual 中对 TEMPLATE = subdirs 的介绍实在简单:
相当长一段时间,自己都是按Manual中的说法进行使用的:
|-- project.pro
|-- app\
| `-- app.pro
|-- lib1\
| `-- lib1.pro
|-- lib2\
| `-- lib2.pro
`-- tests\
|-- tests.pro
|-- test1\
| `-- test1.pro
|-- test2\
`-- test2.pro
TEMPLATE = subdirs
SUBDIRS = lib1 lib2 app tests
TEMPLATE = subdirs
SUBDIRS = test1 test2
一切看起来都很自然。subdirs,顾名思义,SUBDIRS 中指定的就是一个个的子目录呗。真是如此么?
.file
SUBDIRS 中指定的是一个个的子目录来理解,很快有个问题:
每个子目录下的工程文件必须和子目录同名!可是,万一不同名又如何解决呢??
|-- project.pro
|-- app\
| `-- hello.pro
|-- lib1\
| `-- libwidget.pro
`-- lib2\
`-- libtools.pro
恩,这时就该.file出场了!
TEMPLATE = subdirs
SUBDIRS = lib1 lib2 app
app.file = hello.pro
lib1.file = lib1/libwidget.pro
lib2.file = lib2/libtools.pro
恩,直到这时,SUBDIRS 中指定的还都是目录名,仍然没什么问题。可是,在看到.file不久,就发现了.subdir
.subdir
这个东西实在不好理解了,比如,下面的结构:
|-- project.pro
|-- app\
| `-- app.pro
`-- lib1\
`-- lib1.pro
TEMPLATE = subdirs
SUBDIRS = my_lib1 my_app
my_lib1.subdir = lib1
my_app.subdir = app
这样一来,SUBDIRS 后面的东西,完全不是目录名了,而是任意一个名字!
.file 与 .subdir
有了上面两个之后,容易想到的就是:?
- 取一个名字,加入到 SUBDIRS
- 通过.subdir 给它指定子目录名字
- 通过.file 给它指定pro工程的名字
比如:
|-- project.pro
|-- app\
| `-- hello.pro
`-- lib1\
`-- lib1.pro
project.pro是否可以这么写呢?
TEMPLATE = subdirs
SUBDIRS = lib1 my_app
my_app.subdir = app
my_app.file = app/hello.pro
可是,这么却不会工作。不能同时指定 .subdir 和 .file!那怎么办呢?
- 去掉 .file? 显然不行,它需要 app 目录下有 app.pro 文件
- 去掉 .subdir呢?试试看
TEMPLATE = subdirs
SUBDIRS = lib1 my_app
my_app.file = app/hello.pro
啊?还真可以了!
怎么回事?现在不光 SUBDIRS 后面指定的不是目录,后面也不需要 .subdir 来指定目录了。
看来,SUBDIRS是严重的名不副实了!
故事还没完
还是这个例子:
|-- project.pro
|-- app\
| `-- hello.pro
`-- lib1\
`-- lib1.pro
TEMPLATE = subdirs
SUBDIRS = lib1 app/hello.pro
我们可以直接指定pro工程名!
继续?
恩,不需要每个目录都用一个pro文件
|-- project.pro
|-- app\
| `-- app.pro
|-- lib1\
| `-- lib1.pro
|-- lib2\
| `-- lib2.pro
`-- tests\
|-- test1\
| `-- test1.pro
|-- test2\
`-- test2.pro
TEMPLATE = subdirs
SUBDIRS = app lib1 lib2 tests/test1 tests/test2/test2.pro
恩,这样似乎又回归简单了。只需简单指定目录或pro文件路径即可。
少点什么?
恩,下面5个之中,我们只提到了2个(最后2个本人没用到过,也不清楚具体用途)
- subdir
- file
- depends
- makefile
- target
不过中间的depends还是很有用的
TEMPLATE = subdirs
SUBDIRS = app lib1 lib2
app.depends = lib1 lib2
参考
分享到:
相关推荐
QT项目,C++,该工具是windows环境下的工具,将QT的工程项目文件.pro,转换成CMakeLists.txt,也就是说将qmake转换成cmake,使用方法,解压缩后,打开 Windows PowerShell ,进入到解压缩后的目录,再使用命令 ...
`qmake`是Qt框架提供的一个构建工具,主要用于管理Qt项目的编译过程。然而,随着C++和软件工程的发展,`cmake`逐渐成为更通用、跨平台的构建系统,能够支持多种编译器和项目结构。本篇文章将详细介绍如何将Qt项目的`...
在软件开发过程中,Makefile和qmake是两个重要的构建工具,尤其在C/C++编程领域。它们用于自动化编译、链接和其他构建过程,确保代码能够高效地被组织和管理。 **1. Makefile** Makefile是Unix/Linux系统下的一种...
qmake使用手册 qmake是Trolltech公司创建的用于生成Makefile的工具,可以根据不同的平台和编译器书写Makefile。使用qmake,开发者可以创建一个简单的项目文件,并且运行qmake生成适合的Makefile。qmake会注意所有的...
这个是单独的qmake.exe工具,如果不想安装qt的相关的包仅仅想使用QT creator。
#### 四、快速上手QMake 1. **创建项目文件**:QMake的核心在于.pro文件,这是一个文本文件,其中包含了构建应用程序所需的所有信息。以下是一个简单的示例: ```plaintext SOURCES = hello.cpp HEADERS = ...
从给定的文件信息来看,主要关注的是QT4中的qmake手册,这涉及到Qt框架的构建工具qmake的使用和理解。以下是对标题、描述、标签以及部分内容中提及的知识点的详细解读: ### QT4 qmake 手册 **qmake**是Qt提供的一...
Qt5.14.2交叉编译配套qmake.conf文件
#### 四、qmake的优势与局限 - **优势**:跨平台支持,简化编译步骤,集成Qt工具链,易于学习。 - **局限**:虽然强大,但灵活性不如手工编写的Makefile,对于复杂项目可能需要更细致的配置。 通过深入理解qmake的...
在使用Qt开发环境时,有时会遇到`qmake`找不到的问题。这通常是因为系统路径设置不正确,或者Qt的安装路径未被系统识别。本文将详细介绍如何解决`qmake`找不到的问题。 首先,当在终端输入`qmake -v`时,如果出现`...
qmake的介绍 qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。 手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个...
QXMPP库是一个用C++编写的轻量级、易于使用的XMPP框架,它与Qt库紧密结合,利用qmake构建系统,方便在Qt环境中开发XMPP应用。这个源码包特别提到了使用qmake版本,意味着它适用于那些已经安装了Qt和Visual Studio...
### qmake 使用详解 #### 一、简介与安装 **qmake** 是 Trolltech 公司开发的一款自动化生成 Makefile 的工具,适用于多种平台和编译器。它简化了跨平台项目的构建流程,使得开发者能够专注于编写代码而非管理构建...
在软件开发领域,Qt是一个非常流行的跨平台应用程序开发框架,而qmake和Qt Creator是Qt开发环境中的两个重要工具。本教程将深入探讨这两个工具的使用,帮助开发者更好地理解和利用它们进行高效开发。 **qmake简介**...
#### 四、高级用法 ##### 4.1 添加特定平台的源文件 有时,我们需要为不同的平台添加特定的源文件。这可以通过条件语句实现: ```plaintext SOURCES += main.cpp win32: SOURCES += windows_specific.cpp macx: ...
qmake用户手册,感兴趣的朋友,可以下载看看,不需要资源分
**QMake 使用技巧详解** QMake 是 Qt 开发框架中的一个重要工具,用于自动化构建过程,帮助开发者生成项目文件,使得构建应用程序变得更加简单。本篇将深入探讨 QMake 的使用技巧和常见问题的解决方法。 ### 1. **...
#### 四、使用qmake创建项目 1. **创建项目文件**: - **项目文件**(.pro 文件)用于定义项目的各种属性,包括源文件、头文件、配置选项等。 - 示例项目文件: ```plaintext SOURCES = hello.cpp HEADERS = ...
QT和Qmake是Qt框架中的两个重要组成部分,用于软件开发。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,如Windows、Linux、macOS等。它提供了丰富的图形用户界面(GUI)工具包,使得开发者可以方便地创建出...
### 如何使用qmake连接第三方库SDL 在开发过程中,我们常常需要利用各种第三方库来扩展项目的功能。其中,SDL(Simple DirectMedia Layer)库是一个跨平台的多媒体库,广泛应用于游戏开发等领域,用于处理图形、...