Visual Studio c++ включает максимальную длину строки

Я пытался скомпилировать 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, что заставляет его каким-то образом отклонять длинные включения.

Есть ли у кого-нибудь дополнительная информация по этому поводу?

11
задан Scott Minster 15 August 2012 в 12:55
поделиться