如何为 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的主要内容,如果未能解决你的问题,请参考以下文章