3

我有一个包含许多 sobprojects 的主项目,我使用 qmake 编译。

在子项目中,我必须在编译之前复制一些文件(一些头文件)。我已经看到一些命令在链接之前和之后执行操作,但我想知道是否可以在开始编译之前执行一些 shell 操作。我不能引用它们,但我必须复制它们(请不要问为什么,这不是我的错 :-( )。有什么建议吗?

提前感谢您的回复。

4

3 回答 3

3

请参阅我对几乎相同问题的 最后回答:

使用 Qt 编译项目后将一些文件复制到构建目录

对你来说唯一的区别是改变第 5 点:

POST_TARGETDEPS     += copyfiles ## copy files after source compilation

到:

PRE_TARGETDEPS     += copyfiles ## copy files before source compilation

在执行qmake之前,必须存在文件系统中已经存在的所有文件

于 2013-11-07T12:44:39.740 回答
1

我认为您可以通过仔细使用 QMAKE_EXTRA_COMPILERS 和 QMAKE_EXTRA_TARGETS 变量来完成您想要做的事情。Qt Labs 文章The Power of QMake给出了合理的介绍。额外编译器的“.commands”部分可以是任意命令,包括 shell 命令。

我在此电子邮件交流中发现的另一个建议是“……看看 mkspecs/features/*.prf - 特别是那些 moc 和 uic 的……”以了解其他可能的方法。

于 2012-08-21T14:07:12.323 回答
0

我也只是QMAKE_EXTRA_TARGETS尝试解决问题,但无法完成;)

另一个可能对您有用的(简单)解决方案是将调用gcc/ g++:在.pro文件中,设置QMAKE_CXX=./g++Wrapperg++Wrappershell 脚本中,调用原始编译器,同时在调用之前和之后做任何你想做的事情:

#!/bin/bash
DoWhateverYouWantBeforeCompilation
g++ $*
DoWhateverYouWantAfterCompilation

通过评估命令行参数,您还可以将您的操作限制在特定文件中。

于 2012-08-21T14:28:04.167 回答