我正在开发一个库,每次代码被重新编译时,我都面临着运行shell脚本的问题,也就是说,每次修改二进制代码时都会遇到问题。
我使用GCC 64位在ubuntu上运行4.9.2(基于QT5.12.4)
我尝试过使用.commands和QMAKE_EXTRA_TARGETS
来运行一个与POST_TARGETDEPS
结合的定制目标,尽管它不起作用。我也尝试过使用QMAKE_POST_LINK
,尽管问题相同,但结果与预期不一样。目前,只有当我更改.pro文件(并且只执行两次而不是一次)时,脚本才会被执行,而在第一次编译时,它将保持不变。
我不知道这是否相关,但我的项目是由一个库和一个测试代码组成的,我使用SUBDIRS
作为依赖程序。该体系结构是一个全局文件夹,包含一个.pro文件和两个子文件夹(库和测试代码),在编译全局项目时在测试应用程序之前编译库。
我已经尝试过这些帖子中的解决方案:
How to execute shell command after compile finished from .pro in QT?
QMake: execute script after build
https://www.qtcentre.org/threads/46285-How-to-add-the-auto-quot-build-number-quot-in-Qt-Application
我目前使用的代码如下:
mytarget.commands = @echo $$system($$PWD/build_number.sh)
mytarget.depends = FORCE
QMAKE_EXTRA_TARGETS += mytarget
POST_TARGETDEPS += mytarget
我希望脚本只在库被更改时运行一次,也就是只有在代码被修改时才运行。
编辑:项目的详细结构如下:
/TestProject
|--- testProject.pro
|--- API //this project creates a dynamic library which is exported in testApp project
|--- api.pro //where I am trying to run a script
|--- ... (source files of lib)
|--- testApp //uses the library previously generated by the API
|--- testApp.pro
|--- ... (source files of app)
API和testApp之间的依赖关系在testProject.pro中配置如下:
TEMPLATE = subdirs
SUBDIRS = \
Api \
testApp
Api.subdir = API
testApp.subdir = testApp
testApp.depends = Api
使用脚本的空白项目的GITHUB:
发布于 2019-07-15 05:28:07
也许您可以在中添加自定义构建步骤。
它可以通过以下方式完成:
Projects
。Build
Add Build Step
并选择Custom Build Step
sh
添加到Command
。Arguments
发布于 2019-07-15 07:42:29
我也尝试过使用QMAKE_POST_LINK,尽管问题相同,但结果与预期不一样。
我真的不明白你会做错什么,但这应该是可行的:
QMAKE_POST_LINK=/bin/sh $$PWD/build_number.sh
https://stackoverflow.com/questions/57040289
复制相似问题