Makefile QMake:在生成后执行脚本
这用于设置MacOSX应用程序的应用程序包。我有一个脚本,它可以复制一些文件并做一些其他的事情。因此,我希望在构建之后(即链接步骤之后)执行脚本。我希望每次都执行它,因为不可能指定它的依赖项 我知道有Makefile QMake:在生成后执行脚本,makefile,qmake,Makefile,Qmake,这用于设置MacOSX应用程序的应用程序包。我有一个脚本,它可以复制一些文件并做一些其他的事情。因此,我希望在构建之后(即链接步骤之后)执行脚本。我希望每次都执行它,因为不可能指定它的依赖项 我知道有QMAKE_POST_LINK(如描述或),但它仅在目标不存在时运行,即需要进行链接时。但是,我希望脚本每次都运行,也希望在目标已经存在时运行 还有QMAKE_EXTRA_TARGETS和POST_TARGETDEPS(如所述),但这会一直强制重新链接,但实际上我只希望脚本重新运行,并在链接之前运行
QMAKE_POST_LINK
(如描述或),但它仅在目标不存在时运行,即需要进行链接时。但是,我希望脚本每次都运行,也希望在目标已经存在时运行
还有
QMAKE_EXTRA_TARGETS
和POST_TARGETDEPS
(如所述),但这会一直强制重新链接,但实际上我只希望脚本重新运行,并在链接之前运行脚本。(目前,这正是我正在使用的,因为我看不到更好的方法。这是我的QMake源代码。)有相关的问题和建议。我引用我对第一个问题的回答:
另一种按给定顺序排列的方法是使用空的“super”
目标:
super.depends = target_pre first target_post
QMAKE_EXTRA_TARGETS += super
其中,first
-是默认的qmake目标,target\u pre
和
target\u post
一些自定义目标。现在make super
就这么做吧
编辑:看起来在Qt的最新版本中,依赖项的构建是并行运行的,所以这个解决方案不起作用 在过去的几个月里,我已经为这件事挠头好几天了,但我还没有找到一个“纯”的解决方案。然而,FWIW,如果你不介意每次强制重新链接的黑客行为,下面是如何做到这一点: (此“生成后事件”的实现类似于“生成前事件”的实现。) 注意事项:
- 力量每次都会重新连接
- 仅适用于具有链接步骤的项目,因此
或TEMPLATE=aux
TEMPLATE=subdirs
FORCELINK_CPP_FILE = force_link.cpp #This batch of statements causes the dummy file to be touched each build. forcelink.target = $$FORCELINK_CPP_FILE #FORCE is a nonexistent target, which will cause Make to always re-execute the recipe. forcelink.depends = FORCE forcelink.commands = touch $$FORCELINK_CPP_FILE QMAKE_EXTRA_TARGETS += forcelink #This statement ensures that touching the above file at Make time will force relinking. SOURCES += $$FORCELINK_CPP_FILE #QMake will complain unless the file actually exists at QMake time, # too, so we make sure it does. #I used to touch this on QMake build_pass runs, too, # but it caused transient access-denied errors. # I guess the release and debug makefiles are generated in parallel. !build_pass : write_file($$FORCELINK_CPP_FILE)
target\u post
首先依赖于等,让super
依赖于target\u post
难道不管用吗?