【问题标题】:How to run a script after qmake?如何在 qmake 之后运行脚本?
【发布时间】:2015-10-26 17:53:23
【问题描述】:

我希望 qmake 自动运行 (python) 脚本。这个脚本修改了makefile,所以它必须在qmake生成makefile之后,make之前执行。

到目前为止,我只找到了两种从 qmake 运行脚本的方法:

在我的 .pro 文件中使用 system(),但这在 qmake 之前运行 - 太快了:

win32: PYTHON=python.exe
else:  PYTHON=python
system($$PYTHON ./test.py) 

或通过使用QMAKE_EXTRA_TARGETS 的自定义构建目标,但这是由make 调用的(为时已晚)。

在 qmake 生成 makefile 后,有什么方法可以运行脚本吗?

【问题讨论】:

  • 这里是same old question,但没有答案。 IMO最好解释一下为什么需要这个奇怪的功能?也许有替代解决方案?例如cmake 而不是qmake
  • 为什么不先有一个运行 qmake 的 shell 脚本/批处理文件,然后是你的脚本?
  • @MarekR:我正在为一个相当大的项目开发unity build - 我需要将所有 cpp 文件包含到一个文件中,并且只构建这个文件。但是我也想包含生成的moc文件,但是不知道在qmake运行之前是否可以知道所有的moc文件。
  • @MrEricSir:这是一个大项目,目前将所有内容从 qmake 切换到运行某个脚本文件会相当复杂。
  • @RedOctober:我明白了,这是可能的,但不是很容易维护。 Qmake 是从 ide、自动构建器、不同的脚本等运行的。如果可能的话,我将不得不更改所有这些情况,我想避免这些情况。

标签: qt qmake


【解决方案1】:

由于我们在项目中使用TEMPLATE = subdirs,因此我通过创建新的子目录来解决这个问题,该子目录由 qmake 解析为最后一个。在其专业文件中,我使用TEMPLATE = aux 并通过system() 调用运行脚本。

这不是最好的解决方案,但效果很好。

【讨论】:

    【解决方案2】:

    以下对我来说已经好几年了。

    1. 创建调用qmake 的.cmd 或.sh 脚本,然后创建您的脚本:

      %QTDIR%\bin\qmake %* python.exe test.py

    2. 将脚本保存到可以通过PATH 环境找到的位置
    3. 在您的 .pro 文件中添加以下内容:

      QMAKE_QMAKE = myqmake

    4. 然后只需调用 myqmake 而不是 qmake

    如果脚本将在 Qt 环境之外运行(例如从 IDE),那么它可能需要定义 QTDIR 和 QMAKESPEC 环境。

    【讨论】:

      【解决方案3】:

      Cotire (compile time reducer) for CMake 可能是你的朋友。

      它具有以下您正在寻找的加快构建速度的功能:

      为 CMake 目标自动生成单个编译单元(也称为统一源文件)。

      我没有使用它,但在C++ best practice list 中推荐。

      【讨论】:

      • 谢谢,但我不想只为此使用 cmake。另外,我的 scu 版本比一个大的单个编译单元要复杂一些...
      猜你喜欢
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      相关资源
      最近更新 更多