我有一个包含许多 sobprojects 的主项目,我使用 qmake 编译。
在子项目中,我必须在编译之前复制一些文件(一些头文件)。我已经看到一些命令在链接之前和之后执行操作,但我想知道是否可以在开始编译之前执行一些 shell 操作。我不能引用它们,但我必须复制它们(请不要问为什么,这不是我的错 :-( )。有什么建议吗?
提前感谢您的回复。
请参阅我对几乎相同问题的 最后回答:
对你来说唯一的区别是改变第 5 点:
POST_TARGETDEPS += copyfiles ## copy files after source compilation
到:
PRE_TARGETDEPS += copyfiles ## copy files before source compilation
在执行qmake之前,必须存在文件系统中已经存在的所有文件
我认为您可以通过仔细使用 QMAKE_EXTRA_COMPILERS 和 QMAKE_EXTRA_TARGETS 变量来完成您想要做的事情。Qt Labs 文章The Power of QMake给出了合理的介绍。额外编译器的“.commands”部分可以是任意命令,包括 shell 命令。
我在此电子邮件交流中发现的另一个建议是“……看看 mkspecs/features/*.prf - 特别是那些 moc 和 uic 的……”以了解其他可能的方法。
我也只是QMAKE_EXTRA_TARGETS
尝试解决问题,但无法完成;)
另一个可能对您有用的(简单)解决方案是将调用gcc
/ g++
:在.pro
文件中,设置QMAKE_CXX=./g++Wrapper
和g++Wrapper
shell 脚本中,调用原始编译器,同时在调用之前和之后做任何你想做的事情:
#!/bin/bash
DoWhateverYouWantBeforeCompilation
g++ $*
DoWhateverYouWantAfterCompilation
通过评估命令行参数,您还可以将您的操作限制在特定文件中。