我正在开发一个库,每次重新编译代码(即每次更改二进制文件)时都试图运行shell脚本时遇到了问题。
我正在使用GCC 64位的ubuntu上运行Qt Creator 4.9.2(基于QT 5.12.4)
我尝试使用.commands和QMAKE_EXTRA_TARGETS
来运行结合了POST_TARGETDEPS
的自定义目标,尽管它不起作用。
我也尝试使用QMAKE_POST_LINK
,尽管有同样的问题,但结果与预期的不一样。
目前,该脚本仅在我更改.pro文件时执行(该脚本执行了两次,而不是执行一次),并且在第一次编译时才保持不变。
我不知道这是否相关,但是我的项目是由一个使用SUBDIRS
进行依赖的库和一个测试代码组成的。
该体系结构是一个Global文件夹,其中包含一个.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:
答案 0 :(得分:0)
也许您可以在Qt Creator中添加自定义构建步骤。
可以通过以下方式完成:
Projects
。Build
Add Build Step
并选择Custom Build Step
sh
添加到Command
。Arguments
答案 1 :(得分:0)
我也尝试使用QMAKE_POST_LINK,尽管存在相同的问题,但结果与预期的不同。
我真的不明白您可能会做错什么,但这应该可以解决:
QMAKE_POST_LINK=/bin/sh $$PWD/build_number.sh