Qt 项目包括在 qmake 中构建的子项目
Qt project include subprojects build in 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
中需要什么代码才能做到这一点?
如果子项目是普通的C/C++ Qmake可以构建的项目,你可以为子项目创建一个pri文件并将其包含在你的主项目中,但是你的子项目是用Go编写的,我是不确定它是否可以通过 Qmake 构建。
但是你可以像QMAKE_PRE_LINK一样使用QMake变量。您必须创建一个 bash 脚本,该脚本将转到子项目源目录,对其进行配置并制作它。现在您可以在开始链接之前使用 QMAKE_PRE_LINK 指示 qmake 运行 此变量指向的命令。
将其放入您的 pro 文件
QMAKE_PRE_LINK=$$PWD/buildSubproject.sh
在搜索正确答案后,我自己找到了解决方案。这可以通过 QMAKE_EXTRA_TARGETS
和 PRE_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
会将此目标添加为整个项目的依赖项。
我有一个用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
中需要什么代码才能做到这一点?
如果子项目是普通的C/C++ Qmake可以构建的项目,你可以为子项目创建一个pri文件并将其包含在你的主项目中,但是你的子项目是用Go编写的,我是不确定它是否可以通过 Qmake 构建。
但是你可以像QMAKE_PRE_LINK一样使用QMake变量。您必须创建一个 bash 脚本,该脚本将转到子项目源目录,对其进行配置并制作它。现在您可以在开始链接之前使用 QMAKE_PRE_LINK 指示 qmake 运行 此变量指向的命令。
将其放入您的 pro 文件
QMAKE_PRE_LINK=$$PWD/buildSubproject.sh
在搜索正确答案后,我自己找到了解决方案。这可以通过 QMAKE_EXTRA_TARGETS
和 PRE_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
会将此目标添加为整个项目的依赖项。