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