如果我想执行chmod
命令、执行输出的二进制文件或进行其他操作,我需要在.pro
文件中做哪些更改。
我遇到了类似的问题。 我想要一个特殊的工具(版本控制器),每次执行Makefile时都可以运行代码。 这是解决方案:
(在Qmake手册中阅读,配置qmake的环境,部分:自定义Makefile输出)
创建你自己的Makefile目标。 指定命令等。
mytarget.target = .buildfile
mytarget.commands = touch $$mytarget.target
QMAKE_EXTRA_TARGETS += mytarget
这样,您就有了额外的目标,例如可以使用make mytarget
进行调用。如果您想将其与实际的构建目标绑定在一起,则需要添加:
POST_TARGETDEPS += mytarget
希望这能有所帮助。
最好的问候,
D
mytarget.depends = FORCE
吗? - Keith Russell另一种按照给定顺序制作事物的方法是使用空的“超级”目标:
super.depends = target_pre first target_post
QMAKE_EXTRA_TARGETS += super
first
是默认的qmake目标,而target_pre
和target_post
则是一些自定义目标。现在运行make super
就可以完成任务。
编辑:看起来在Qt的最新版本中,依赖项的构建是并行运行的,因此这种解决方案将不起作用。
正确的答案取决于您想要什么以及何时需要。然而,正如在此之前发布的一些评论中所看到的那样,QMAKE_POST_LINK
可能是您想要的,而不是POST_TARGETDEPS
。
请查看相关帖子: QMake:构建后执行脚本
首先,当您使用POST_TARGETDEPS
时,在Windows中它会在您的exe创建之前(或在Linux中重新创建之前)触发!QMake的工作方式取决于平台和编译器。
当我需要在重新编译exe时进行一些“符号处理”时,POST_TARGETDEPS
在Windows(使用mingw)和Linux(使用gcc)中都给我带来了问题。在Windows中,它过早地执行了我的脚本,在Linux中,它在我修改exe后覆盖了它(即在我的外部脚本中剥离它后,将我的调试信息添加回exe)。然而,QMAKE_POST_LINK
在这两种情况下都完美地工作。相比之下,它也更加简短、清晰明了!