编译前复制文件

时间:2012-08-21 13:48:35

标签: qt qmake

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

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

提前感谢您的回复。

3 个答案:

答案 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

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