我怎样才能平息这个警告
根据我对 qmake 代码的阅读,您可以:
- 要么让 qmake 忽略任何不存在的文件名 - 在这种情况下,它们将不会通过您的后续步骤构建
- 或者让它写下这些警告
我认为这些都不会让你满意。
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);
所以传入第一个块的标志参数将是RemoveMissingFiles
或WarnMissingFiles
,具体取决于comp.flags & Compiler::CompilerRemoveNoExist
。
或者,有没有更好的方法来使用 qmake 生成中间文件?
我不确定它是否更好——即它肯定很复杂——但这就是我工作的地方所做的......
在 .pro 文件中,完成了系统调用,即:
- 生成所需的文件,
- 然后将他们的名字写到标准输出。
这是 .pro 中的一个示例,以显示如何调用它:
SOURCES += $$system( python my_script_name.py )
如果您愿意,您当然可以将参数传递给 python 脚本
注意事项/限制:
- 这意味着无论您何时运行,python 脚本都会运行
qmake
,但不会在单独make
调用期间运行。
- 每次调用 python 确实减慢了我们的 qmake 步骤 - 大约是在不启动 python 的情况下运行 qmake 的两倍 - 但你总是可以使用不同的脚本语言
这将解决您的问题,因为当 qmake 处理该SOURCES
值时,文件已由脚本创建。