如何消除qmake的“警告:找不到:”?

2024-04-10

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

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

既然我知道我的PRE_TARGETDEPS会产生那些文件吗?

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

Example

这是一个完整的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 代码的阅读来看,您似乎可以:

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

我认为这两者都不能让你满意。


这是我的推理......我正在寻找文字Failure to find在 Qt 发行版中,我必须提供:qt4.8.1。

中出现了3次qmake/generators/makefile.cpp。两个代码块如下所示:

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);

因此传入第一个块的 flags 参数将是RemoveMissingFiles or WarnMissingFiles, 根据comp.flags & Compiler::CompilerRemoveNoExist.


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

我不确定它更好 - 也就是说它肯定很复杂 - 但这就是我工作的地方所做的......

在 .pro 文件中,完成了系统调用:

  1. 生成所需的文件,
  2. 然后将他们的名字写到标准输出。

以下是 .pro 中的示例,展示了如何调用它:

SOURCES    += $$system( python my_script_name.py )

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

注意事项/限制:

  • 这意味着只要您运行,python 脚本就会运行qmake,但不是在个人期间make祈求
  • 每次调用 python 确实会减慢我们的 qmake 步骤 - 花费的时间大约是在不启动 python 的情况下运行 qmake 的两倍 - 但您始终可以使用不同的脚本语言

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何消除qmake的“警告:找不到:”? 的相关文章

  • qt qmake .qrc hasmodification time xxx in the future

    原因 xff1a 跨平台生成的 qrc 文件创建时间与目标平台时间不一致导致 xff0c 如win写的 copy 到 Linux xff0c 再编译可能会遇到该bug 导致无法qmake 与 build 解决 xff1a touch qrc
  • qmake中文官方文档

    qmake QMake提供了一个用于管理应用程序 库 其他组件的构建过程的面向工程系统 QMake扩展了每个工程文件的信息 生成一个执行编译和连接过程的Makefile 本文翻译自Qt 4 8官方文档 一 QMake使用 QMake提供了一
  • qmake手册(Qt5.9.3)

    qmake手册 qmake手册 概观 描述一个项目 建立一个项目 使用第三方库 预编译头文件 入门 从简单的开始 使应用程序可调试 添加平台特定的源文件 如果文件不存在停止qmake 检查多个条件 创建项目文件 项目文件元素 变量 注释 内
  • 如何将外部库添加到qt4应用程序c++

    将额外编译的库添加到我的 qt 项目的最佳方法是什么 例如 boost 或 poco libs 谢谢 如果您使用 GCC 编译器 请将类似以下内容添加到 pro 文件中 对于升压 INCLUDEPATH d Biblioteki C boo
  • 如何使用 qmake 为单个源文件指定编译器标志?

    而其他源文件使用默认标志 我的一些源文件需要一些额外的 C 预处理器定义 我使用 Qt 5 我只发现 QMAKE CXXFLAGS 用于 qmake 项目中的全局使用 这就是过去在 Qt 源代码本身中进行 GUI 绘制的理论上的做法 SOU
  • QMake CONFIG() 函数和“主动配置”

    在阅读 Qt 5 1 的文档 特别是 qmake 的文档时 我对 qmake CONFIG 函数文档中给出的解释感到困惑 我完全理解该函数的单参数版本 但双参数版本对我来说完全没有意义 我认为我的困惑来自于缺乏 活动配置 的定义 因为 Qt
  • Qt 5.5 与 qmake:链接器无法解析 OpenGL 函数调用

    当使用 Qt 5 5 qmake 和 MSVC 13 编译具有一些基本 OpenGL 函数调用的基本样板 Qt 应用程序时 我收到以下链接器错误 glwidget obj 1 error LNK2019 unresolved externa
  • 在 Linux 中,如何在 Qt Creator 中添加使用 su 权限的构建步骤,而不会在构建时尝试错误的密码?

    我的目标是成功地将文件夹链接到 opt 目录 需要使用 sudo 运行 我已经尝试过这个 system sudo ln s OUT PWD xampp opt lampp message You should manually link L
  • 如何从 qmake 获取 Makefile

    给定一个 x pro 文件 我如何生成 makefile 运行 qmake x pro 会生成一个没有 Makefile 的 x pbproj 目录 Thanks 编辑 添加信息 关于 pro 文件和平台 我在 Mac OS X 10 6
  • 在 QMake 中设置 RPATH 顺序

    我有一个 Linux Qt 程序 我希望它优先使用可执行文件目录中的 动态 Qt 库 如果存在 否则使用系统的 Qt 库 RPATH 来救援 我将此行添加到qmake的 pro 文件 QMAKE LFLAGS Wl rpath ORIGIN
  • 我如何在 QMake 中包含 python.h

    INCLUDEPATH L usr include python2 7 LIBS usr local lib python2 7 QMAKE CXXFLAGS usr local lib python2 7 error cannot fin
  • 使用并行构建时 PRE_TARGETDEPS 失败

    我正在使用自定义资源管理 代替 qrc 并尝试将其集成到 Qt Creator 中 我有一个 Python 脚本 可以生成要编译的源文件 我用QMAKE EXTRA TARGETS PRE TARGETDEPS告诉QMake该脚本必须在文件
  • 使用 qmake 获取日期

    由于我使用今天的日期作为我的应用程序版本 因此我有兴趣自动填充它 目前我正在我的项目文件中执行以下操作 VERSION 15 4 20 但我想让它自动进行 VERSION YEAR MONTH DAY 任何想法 您可以使用QMAKE POS
  • QT:qmake 无法识别 3dcore、3drender

    我在用qmake编译我的QT项目 在我的 pro文件我有一行 QT 3dcore 3drender 3dinput 3dextras 执行时qmake myprofile pro我收到错误 Project ERROR Unknown mod
  • 是否可以在 qmake 中向 Makefile 添加依赖项?

    目前 我有一个文件 其中包含一些版本标记信息 该信息由 pro 文件使用并由 qmake 解析 但问题是当该文件更改时 qmake 不会重新运行 是否可以向 pro 文件添加一些内容 以便 qmake 将该文件视为 Makefile 的依赖
  • qmake 中的 debug_and_release 配置功能有什么优点?

    我只能看到未来的一个优点 我们能够发行make all commad 好吧 我不打电话make在我的开发人员生命中的任何阶段 我使用 Qt Creator 当我构建项目时 我希望它严格作为调试或发布 我想这是人们预期的行为 But debu
  • 如何使用 qmake 处理两个同名的源文件?

    我的 Qt 项目有两个同名但位于不同文件夹中的源文件 专业文件是 SOURCES A Test cpp SOURCES B Test cpp 它可以通过 Qt Visual Studio 插件生成 Visual Studio 解决方案文件
  • 在CMake项目下编译单个文件?

    我正在开发一个 C 项目 该项目将包含在一个更大的项目中 我已经看到 在更大的项目 是一个 Qt 应用程序 它是从 qmake 生成的 上 我可以从 linux 命令行编译单个文件 只需输入特定文件的相对路径作为 make 的参数 另一方面
  • 如何使用CMake检测目标架构?

    我已经做了很多研究 但无法找到答案 我如何使用 CMake 可靠地找到我正在编译的目标架构 基本上相当于qmake中的QMAKE TARGET arch 大多数来源似乎建议使用 CMAKE SYSTEM PROCESSOR 但这是一个糟糕的
  • 将自定义命令添加到 qmake 中的现有目标

    有没有办法指定 在 pro文件中 要添加到标准目标的额外命令Makefile that qmake产生 例如 考虑distclean 可能需要额外的命令来 Remove files 从源树中清除运行时生成的输出文件 Etc 我想使用普通目标

随机推荐