如何为 Qt 项目的一个子目录调用 make install

Posted

技术标签:

【中文标题】如何为 Qt 项目的一个子目录调用 make install【英文标题】:How to invoke make install for one subdirectory of Qt project 【发布时间】:2010-05-13 19:40:46 【问题描述】:

我正在开发自定义库,我希望用户可以通过添加来使用它:

CONFIG += mylib

到他们的专业档案。这可以通过将 mylib.prf 文件安装到 %QTDIR%/mkspec/features 来完成。我已经在Qt Mobility 项目中查看了如何创建和安装这样的文件,但是我想做不同的一件事。

如果我正确理解了 Qt Mobility 的 pro/pri 文件,在示例项目中,他们并没有真正使用 CONFIG += 移动性,而是添加 QtMobility 源以包含路径并与主库项目共享 *.obj 目录.对于我的库,我希望有尽可能独立项目的示例,即一旦编译和安装 MyLib 就可以从任何地方编译的项目。

我有以下目录结构:

mylib
  |
  |- examples
  |- src
  |- tests
  \- mylib.pro

似乎实现上述目标的最简单方法是像这样创建 mylib.pro:

TEMPLATE = subdirs
SUBDIRS += src
SUBDIRS += examples
tests:SUBDIRS += tests

在构建 src 之后以某种方式强制调用“cd src && make install”。最好的方法是什么?

当然,欢迎在示例编译之前对自动库部署提出任何其他建议。

【问题讨论】:

【参考方案1】:

您可以创建另一个目标并将其添加到 SUBDIRS 变量中,如果您意识到普通的 .pro 文件也可以是目标,这将非常有效。我会建议这样的事情

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS += src
tests:SUBDIRS += tests
SUBDIRS += src/install.pro
SUBDIRS += examples

在这种情况下,我通过配置变量添加确保子目录目标将按顺序执行。我将测试编译移到了安装之前,这对我来说很有意义——您需要在继续安装之前测试代码是否正常工作。重要的补充是直接链接到源目录中的 install.pro 文件。 (如果你想保持 src 更干净,你也可以将它放在本地目录中。)在那里,你应该有你的命令来安装你想要安装的组件。

在这种情况下,我发现将源和标头列表分离到一个文件中通常会有所帮助,该文件可以包含在多个 .pro 文件中,例如:

src/sources.pri:

HEADERS += foo.h
SOURCES += foo.c

src/src.pro

include(sources.pri)
#...

src/install.pro

include(sources.pri)
#...

【讨论】:

以上是关于如何为 Qt 项目的一个子目录调用 make install的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 makefile 构建的整个项目生成一个大型依赖映射?

如何为整个 Qt 应用程序创建一个菜单?

如何为 arm-v7 交叉编译 qt 应用程序

如何为 Windows XP 部署 Qt/QML 应用程序

如何为Ocaml项目生成正确的makefile

如何为非 Qt 应用程序创建 Qt 共享库