qmake: команда gcc слишком длинная из-за необычных опций -isystem‹path›

У меня есть проект QtCreator, в котором используются qmake, MingW и gcc (и Qt 5.9.4). Когда я запускаю qmake в режиме отладки, он генерирует команду gcc, которая настолько длинна, что ее усекают. Усеченный бит — это имя и путь к исходному файлу, поэтому без удивления gcc напрямую завершает работу с фатальной ошибкой: нет входного файла.

Команды gcc, сгенерированные qmake (и найденные в сгенерированных файлах Makefile), выглядят следующим образом:

<mode>/mtrx_2x2.o: ../<some path>/mtrx_2x2.c \
                  ../<some path>/mtrx_2x2.h \
                  ../<some path>/mtrx_struct.h \
                  ../<some path>/mtrx_nxn.h
    $(CC) -c $(CFLAGS) $(INCPATH) -o <mode>/mtrx_2x2.o ../<some path>/mtrx_2x2.c

<mode> это либо release, либо debug, в зависимости от выбранного режима.

В режиме отладки для этого проекта (но не в режиме релиза для этого проекта, а также ни для какого другого проекта, будь то релиз или отладка) переменная INCPATH расширяется во что-то гораздо более длинное, чем в любом другом случае, и именно это вызывает усечение.

В частности, большинство моих включаемых папок, перечисленных с -I<path> (также перечисленных в режиме выпуска для этого проекта и в других подобных проектах), также перечислены с -isystem"<path>" (это то, что характерно для режима отладки в этом проекте) .

Здесь команда qmake, запускаемая QtCreator:

C:\Qt\Qt5.9.4\5.9.4\mingw53_32\bin\qmake.exe <some path>/project.pro -spec win32-g++ "CONFIG+=debug" && C:/Qt/Qt5.9.4/Tools/mingw530_32/bin/mingw32-make.exe qmake_all

Конечно же, как и другие проекты, которые не доставляют мне таких проблем.

Кто-нибудь знает, что происходит?


person Charles    schedule 05.09.2019    source источник


Ответы (1)


Дополнительные -isystem"<path>" были привнесены внутренним скриптом, который я получил от кого-то другого, но точно не понимал, что он делает. Деактивация этого скрипта решает мою проблему.

В любом случае, каково ограничение на количество символов в команде gcc или вообще в любой команде?

person Charles    schedule 05.09.2019
comment
What is the character limit Это зависит от ОС. Для Windows это 32K. - person Matt; 05.09.2019