gpt4 book ai didi

qmake - 如何平息 qmake 的 "WARNING: Failure to find:"?

转载 作者:行者123 更新时间:2023-12-04 15:24:33 26 4
gpt4 key购买 nike

我正在使用 PRE_TARGETDEPS生成源文件,我将生成的源文件添加到 SOURCES用于编译。

我的生成器的输出显然在 qmake 运行时不存在,所以 qmake 输出 WARNING: Failure to find:对于每个要创建的源文件。

我怎样才能平息这个警告,因为我知道我的 PRE_TARGETDEPS将产生那些文件?

或者,有没有更好的方法来使用 qmake 生成中间文件?

例子

这是一个完整的test.pro显示问题的文件:

TEMPLATE = lib

preprocess.commands += cat test.cc.in | sed 's/a/0/g' > test.0.cc ;
preprocess.commands += cat test.cc.in | sed 's/a/1/g' > test.1.cc ;
preprocess.depends = test.cc.in
QMAKE_EXTRA_TARGETS += preprocess
PRE_TARGETDEPS += preprocess

SOURCES = test.0.cc test.1.cc

将它放在一个空文件夹中,并创建一个空 test.cc.in文件。运行 qmake ,您将看到以下警告:
WARNING: Failure to find: test.0.cc
WARNING: Failure to find: test.1.cc

最佳答案

我怎样才能平息这个警告

从我对 qmake 代码的阅读来看,您似乎可以:

  • 要么让 qmake 忽略任何不存在的文件名 - 在这种情况下,它们将不会被您的后续步骤构建
  • 或者让它写这些警告

  • 我认为这些都不会让你满意。

    这是我的推理.... 我在寻找文本 Failure to find在 Qt 发行版中,我不得不手头:qt4.8.1。

    它在 qmake/generators/makefile.cpp 中出现了 3 次.两块代码如下所示:
    QStringList
    MakefileGenerator::findFilesInVPATH(QStringList l, uchar flags, const QString &vpath_var)
    {
    ....
    debug_msg(1, "%s:%d Failure to find %s in vpath (%s)",
    __FILE__, __LINE__,
    val.toLatin1().constData(), vpath.join("::").toLatin1().constData());
    if(flags & VPATH_RemoveMissingFiles)
    remove_file = true;
    else if(flags & VPATH_WarnMissingFiles)
    warn_msg(WarnLogic, "Failure to find: %s", val.toLatin1().constData());
    ....
    else if(flags & VPATH_WarnMissingFiles)
    warn_msg(WarnLogic, "Failure to find: %s", val.toLatin1().constData());

    这被称为:
            l = findFilesInVPATH(l, (comp.flags & Compiler::CompilerRemoveNoExist) ?
    VPATH_RemoveMissingFiles : VPATH_WarnMissingFiles, "VPATH_" + comp.variable_in);

    所以传入第一个块的标志参数将是 RemoveMissingFilesWarnMissingFiles , 取决于 comp.flags & Compiler::CompilerRemoveNoExist .

    或者,有没有更好的方法来使用 qmake 生成中间文件?

    我不确定它是否更好 - 即它肯定很复杂 - 但这就是我工作的地方......

    在 .pro 文件中,完成了一个系统调用,即:
  • 生成所需文件,
  • 然后将他们的名字写出到标准输出。

  • 这是 .pro 中的一个示例,用于说明如何调用它:
    SOURCES    += $$system( python my_script_name.py )

    如果您愿意,您当然可以将参数传递给 python 脚本

    注意事项/限制:
  • 这意味着每当您运行 qmake 时,python 脚本都会运行。 ,但不是在个人期间make调用
  • 每次调用 python 都会减慢我们的 qmake 步骤——大约是运行 qmake 而不启动 python 的两倍——但是你总是可以使用不同的脚本语言

  • 这将解决您的问题,因为当 qmake 处理 SOURCES 时值,文件已由脚本创建。

    关于qmake - 如何平息 qmake 的 "WARNING: Failure to find:"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105877/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com