QT 4.5 - Как включить LTCG в VS2005 при компоновке с библиотеками QT?

При попытке установить связь с выпуском QT 4.5 я сталкиваюсь с этим сообщением об ошибке

фатальная ошибка C1047: объект или файл библиотеки 'c: \ qt \ 2009.02 \ qt \ lib \ qtmain.lib' был создан компилятором более старой версии, чем другие объекты; перестраивать старые объекты и библиотеки

Я использую тот же компилятор для своих текущих проектов для компиляции QT 4.5 (VS 2005, хотя я не уверен, компилирую ли я его с VS2005 SP1 или нет, но сейчас я использую SP1). Проблема возникает только тогда, когда в другой библиотеке, которую я компилирую, включен GL (который автоматически переключился на LTCG с помощью VS2005). Я мог бы заставить сборку работать, только если бы я отключил всю оптимизацию во всех других библиотеках (которые не позволяют включить LTCG)

Есть ли способ заставить QT 4.5 работать с процессом сборки выпуска LTCG? Если мне нужно перекомпилировать, какие флаги мне нужно установить для nmake?

Кстати, проект создается с помощью QT 4.5 Visual Studio Add-in, а для релизной сборки у него автоматически отключен GL.


person Extrakun    schedule 18.08.2009    source источник


Ответы (2)


Я столкнулся с аналогичной проблемой, пытаясь собрать примеры в Qwt, и сделал то же самое, что и вы - - Я удалил переключатель -GL из всех файлов Makefile (Makefile.Release). Немного мучительно, но теперь все примеры работают.

Из комментариев в этой теме похоже, что Qt 4.5.0 теперь использует флаги / GL и / LTCG.

Обновление от 14 января 2010 г. Новый метод, позволяющий полностью избавиться от проблемы -GL / -LTCG:

Отредактируйте C: \ Qt \ 4.5.1 \ mkspecs \ win32-msvc2008 \ qmake.conf (или тот, который соответствует вашей версии MSVC) и измените строки

QMAKE_CFLAGS_RELEASE    = -O2 -MD -GL

to

QMAKE_CFLAGS_RELEASE    = -O2 -MD

и

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO /LTCG

to

QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO

Теперь любой созданный Makefile не будет иметь этих флагов.

Обновление 2010-03-22 Похоже, в Qt 4.6.1 исправлена ​​исходная проблема. Дайте ему вращение.

person dwj    schedule 03.09.2009
comment
Я использую Qt 4.5.0, что меня расстраивает - person Extrakun; 04.09.2009

Если присмотреться к дополнительным параметрам для QT 4.5, есть флаг для включения LTCG. По умолчанию он отключен.

person Extrakun    schedule 29.10.2009