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