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