Отключение инкрементного связывания при использовании NMAKE

Я пытаюсь собрать Qt используя nmake, Но когда я пытаюсь это сделать, я получаю сообщение об ошибке ниже.

ССЫЛКА: фатальная ошибка LNK1123: ошибка при преобразовании в COFF: файл неверен или поврежден

Насколько я знаю, это связано с версией.NET Framework (я использую.NET 4.5), и я получаю ту же ошибку компоновки при компиляции проектов C++ в VS2010. Чтобы избавиться от этого, я отключаю добавочные ссылки, как предлагается в этом посте.

Но я не знаю, как это сделать, когда я бегу nmake из командной строки VS Нужно ли упоминать об этом при настройке или я могу передать его как параметр в nmake?

2 ответа

Решение

Это флаг компоновщика, поэтому вам нужно будет передать его компоновщику, а не "nmake". То есть в вашем make-файле Windows при сборке из командной строки вам нужно будет найти вызов компоновщика и передать туда аргумент. Псевдокод следует:

foo: $ (LD_COMMAND) / INCREMENTAL: NO

Что вы могли бы, это открыть файл проекта qmake и написать это:

QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO

Затем вы можете вызвать команду qmake и увидеть сгенерированный Makefile. Ищите "/INCREMENT:NO", и таким же образом вам нужно будет поместить его в ваш Makefile, если вы создадите его другим способом.

В противном случае, это просто сработает, если вы выполните qmake для генерации Makefile, при условии, что вы подбираете соответствующий файл спецификации для вашей цепочки инструментов и среды.

В соответствии с mkspecs/win32-msvc2010/qmake.conf Qt 4 и 5 QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO уже там. Так что вы столкнулись с другой проблемой, если вы компилируете Qt в режиме релиза.

Другие вопросы по тегам