首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在QT中使用pro文件在重新编译时执行shell命令?

如何在QT中使用pro文件在重新编译时执行shell命令?
EN

Stack Overflow用户
提问于 2019-07-15 12:59:30
回答 2查看 1.5K关注 0票数 1

我正在开发一个库,每次代码被重新编译时,我都面临着运行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

我目前使用的代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
    mytarget.commands = @echo $$system($$PWD/build_number.sh)
    mytarget.depends = FORCE

    QMAKE_EXTRA_TARGETS += mytarget
    POST_TARGETDEPS += mytarget

我希望脚本只在库被更改时运行一次,也就是只有在代码被修改时才运行。

编辑:项目的详细结构如下:

代码语言:javascript
代码运行次数:0
运行
复制
/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中配置如下:

代码语言:javascript
代码运行次数:0
运行
复制
TEMPLATE = subdirs

  SUBDIRS = \
            Api \ 
            testApp

  Api.subdir  = API
  testApp.subdir  = testApp

  testApp.depends = Api  

使用脚本的空白项目的GITHUB:

https://github.com/MMinie/testSHELL

EN

回答 2

Stack Overflow用户

发布于 2019-07-15 13:28:07

也许您可以在中添加自定义构建步骤。

它可以通过以下方式完成:

  1. 在Qt中,单击左侧的Projects
  2. 在工具包中选择Build
  3. 单击下拉Add Build Step并选择Custom Build Step
  4. sh添加到Command
  5. 将脚本的路径添加到Arguments
票数 0
EN

Stack Overflow用户

发布于 2019-07-15 15:42:29

我也尝试过使用QMAKE_POST_LINK,尽管问题相同,但结果与预期不一样。

我真的不明白你会做错什么,但这应该是可行的:

代码语言:javascript
代码运行次数:0
运行
复制
QMAKE_POST_LINK=/bin/sh $$PWD/build_number.sh
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57040289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档