Я пытался скомпилировать Qt в Windows и столкнулся с интересной проблемой #, включающей сбой с ошибкой, заключающейся в том, что включаемый файл не существует («Нет такого файла или каталога» ). Однако файл существует. Файлы, выполняющие включение, представляют собой автоматически -сгенерированные файлы «moc» (, созданные Qt ), которые имеют включение, подобное следующему:
#include "../../../../../../../../qt-everywhere-opensource-src-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
Строка в этом включении имеет длину 127 символов. В сборке создано и скомпилировано много "moc" файлов, но только очень длинные, такие как (127+ символов ), терпят неудачу.
Файлы, о которых идет речь, находятся в системе UNIX и доступны через Samba для Windows. Мне удалось обойти проблему, создав символическую ссылку и заменив «qt -везде -opensource -src -4.8.2» на «qt -4.8.2» в затронутых файлах. Результат включает:
#include "../../../../../../../../qt-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"
имеет длину всего 102 символа и отлично работает.
Я искал вокруг и не мог найти никаких ссылок на это. Я также не мог воспроизвести проблему вне этой сборки Qt (, просто делая произвольно длинные имена файлов и пытаясь включить их ). Поэтому вполне возможно, что make-файлы nmake
, которые создает Qt, делают что-то при запуске cl
, что заставляет его каким-то образом отклонять длинные включения.
Есть ли у кого-нибудь дополнительная информация по этому поводу?