我一直在尝试在 Windows 上编译 Qt,我遇到了一个有趣的问题,#includes 失败,错误是包含的文件不存在(“没有这样的文件或目录”)。但是该文件确实存在。执行包含的文件是自动生成的“moc”文件(由 Qt 制作),包含如下内容:
#include "../../../../../../../../qt-everywhere-opensource-src-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
该包含中的字符串长度为 127 个字符。在构建中生成和编译了许多“moc”文件,但只有像这样长度很长(127+ 个字符)的文件会失败。
有问题的文件恰好位于 UNIX 系统上,通过 Samba 共享到 Windows。我能够通过创建符号链接并将受影响文件中的“qt-everywhere-opensource-src-4.8.2”替换为“qt-4.8.2”来解决此问题。结果包括:
#include "../../../../../../../../qt-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
仅 102 个字符长并且工作得很好。
我四处搜索,找不到任何对此的参考。我也不能在这个 Qt 构建之外复制这个问题(只是制作任意长的文件名并尝试包含它们)。因此nmake
,Qt 创建的 makefile 在运行时可能会以某种方式执行某些操作,cl
从而导致它以某种方式拒绝长包含。
有没有人对此有任何额外的信息?