如何在QT中从.pro完成编译后执行shell命令?

时间:2011-05-10 07:53:37

标签: qt qmake

如果我想执行.pro命令,执行输出二进制文件或执行其他操作,我必须对chmod文件进行哪些更改。

4 个答案:

答案 0 :(得分:27)

我有类似的问题。每次执行Makefile时,我都想要一个特殊的工具(版本控制器)来运行代码。这是解决方案:

(将在Qmake Manual, Configuring qmake's Environment, Section: Customizing Makefile Output中阅读)

创建自己的Makefile目标。指定命令等。

mytarget.target = .buildfile
mytarget.commands = touch $$mytarget.target

QMAKE_EXTRA_TARGETS += mytarget

这样,您可以使用make mytarget调用额外的目标。如果您想将它们绑定到实际的构建目标,则必须添加:

POST_TARGETDEPS += mytarget

希望有所帮助。

最好的问候 d

答案 1 :(得分:0)

如果您使用的是Qt Creator,则可以在“项目”面板中添加自定义构建步骤:http://doc.qt.nokia.com/qtcreator-2.1/creator-build-settings.html#adding-custom-build-steps

答案 2 :(得分:0)

正确答案取决于您想要什么,以及何时。但是,正如之前发布的一些评论中所见QMAKE_POST_LINK可能是您想要的而不是POST_TARGETDEPS

查看相关帖子: QMake: execute script after build

首先,当您使用POST_TARGETDEPS在创建exe之前(在Windows中)或在重新创建之前(在Linux中)! QMake根据平台和编译器的不同而有所不同。

我需要做一些"符号处理"在重新编译时的exe上。 POST_TARGETDEPS在Windows(使用mingw)和Linux(使用gcc)中给了我问题。在Windows中,它过早地执行了我的脚本,并且在Linux中它在我修改它之后覆盖了我的exe(即在我在我的外部脚本中删除它之后将我的调试信息添加回exe)。然而,QMAKE_POST_LINK在两种情况下都表现完美。相比之下,它也简短,甜美,更清晰!

答案 3 :(得分:0)

按照给定的顺序制作东西的另一种方法是使用空的" super"目标:

super.depends = target_pre first target_post
QMAKE_EXTRA_TARGETS += super

其中first - 是默认的qmake目标,target_pretarget_post是一些自定义目标。现在make super就是这样做的。

编辑:看起来在最后版本的Qt构建的依赖项中运行在并行中,因此此解决方案无法正常工作。