Qt项目包括在qmake中构建的子项目

时间:2016-12-20 14:37:27

标签: qt makefile qmake

我有一个用Qt / C ++编写的跨平台项目,这个项目使用一个用Go编写的静态库作为依赖项。 Go项目使用GNU Make生成两个文件(.a.h)。

我正在尝试自动化我使用qmake生成Makefile的构建,然后将此Makefile的默认目标调用为简单$ make

现在我的构建首先明确地执行git clone go-subproject && cd go-subproject && make,然后它复制结果库和头文件,然后只调用git clone qt-project && qmake && make(注意那些不是确切的命令,这些只是对什么的简化解释我现在正在做。)

我可以将子项目包含为git module,以便在执行git clone qt-project时自动获取子项目的最新代码。

要使其工作如何指示.pro文件生成首先构建子项目的Makefile?

更新

似乎问题的结构不明确。以下是结构外观的一些可视化:

/
|
+- .git/
|
+- qt-project.pro
|
+- go-project/
|            |
|            +- .git/
|            |
|            +- Makefile

因此,在上述结构中,我想用$ qmake && make

构建整个项目

我需要在qt-project.pro中使用哪些代码来执行此操作?

2 个答案:

答案 0 :(得分:3)

在寻找正确的答案后,我自己找到了解决方案。可以使用QMAKE_EXTRA_TARGETSPRE_TARGETDEPS变量以及定义自定义目标来完成此操作。比如上面描述的项目:

在我的.pro文件中:

# Build sub project
subproject.target = subproject
subproject.commands = cd $$PWD/go-project/ && \
                      make

QMAKE_EXTRA_TARGETS += subproject
PRE_TARGETDEPS += subproject

QMAKE_EXTRA_TARGETS将使用指定命令将附加目标添加到生成的Makefile中,PRE_TARGETDEPS将此目标添加为整个项目的依赖项。

答案 1 :(得分:0)

如果子项目是Qmake可以构建它的普通C / C ++项目,你可以为子项目创建一个pri文件并将其包含在你的主项目中,但你用Go和我写的子项目不确定它是否可以通过Qmake建立或不建立。

但您可以使用QMAKE变量,例如QMAKE_PRE_LINK。你必须创建一个bash脚本,它转到子项目源目录,配置它并制作它。现在,您可以在开始链接之前使用QMAKE_PRE_LINK指示此变量指向的qmake run命令。

将其放入您的专业档案

  

QMAKE_PRE_LINK = $$ PWD / buildSubproject.sh