【问题标题】:Qt qmake - how to stop it adding rules to delete the targetQt qmake - 如何阻止它添加规则以删除目标
【发布时间】:2009-12-30 16:49:20
【问题描述】:

我正在尝试将一个单元测试添加到一组其他测试中。所有测试都在它们自己的子目录中,每个子目录都有自己的 .pro 文件和包含测试本身的 .cpp 文件。在其中一个子目录中运行 qmake 会创建一个 Makefile,然后运行 ​​make 会运行编译器来生成 TARGET。测试实际上由“检查”目标运行 - 即使用“检查”。

我试图添加的测试不同,但它试图假装表现相同。

它是不同的,因为它是一个 perl 脚本,所以不需要编译。但是,它确实需要运行 - 所以“make check”需要工作。

我有一个 .pro 文件大部分都在工作 - 'qmake'、'make'、'make check' 和 'make clean' 可以工作,但 'make distclean' 删除了我的脚本(因为它假设它可以可以通过编译重新生成)。

那么,问题是,如何阻止它删除我的脚本?

也许我应该采取其他一些方法。我曾尝试过“子目录”模板,但这不仅仅是删除 Makefile 中删除目标的行。

想法?

在 Qt 4.6.0 中使用 Ubuntu Linux。

【问题讨论】:

  • 您能否提供更多有关引用您的 perl 脚本的 .pro 文件的详细信息?从您的描述中,我无法弄清楚为什么“make distclean”会删除脚本。是因为你已经完成了 TARGET=mytest.pl 吗?
  • 我没有明确地做 TARGET=mytest.pl,但是我的脚本和 pro 文件(少 .pro)和目录名称相同,我认为 qmake 会自动添加规则。
  • @Maximillian:您是否指定了目标?如果您不这样做,则 TARGET 默认为 .pro 文件的名称,而不是“.pro”。 TARGET 变量会自动添加到 distclean 目标中,以便描述行为。最简单的解决方法是重命名脚本。

标签: qt qmake


【解决方案1】:

我会为您的脚本研究custom target 功能。也许是这样的:

check.commands = <scriptname>
check.depends = <any dependencies>
QMAKE_EXTRA_TARGETS += check

这样做会在依赖关系发生变化时运行检查命令,但只要你不指定check.target,它就不应该删除任何东西。 (如果您的脚本确实产生了输出,那么可能应该在 check.target 中。)此外,由于它被指定为“额外”命令,qmake 不应创建命令来删除 distclean 中的脚本。

这是假设您的脚本位于其自己的子目录(您声明的)中,并且是唯一需要在该子目录中运行的“检查”命令(问题暗示,但未直接说明)。

【讨论】:

  • 我会再玩一些,但我之前的尝试没有奏效 - 我认为是因为 qmake 会自动将脚本名称添加到 QMAKE_DISTCLEAN...它是应用程序模板的一部分吗?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
相关资源
最近更新 更多