Почему qmake выбирает библиотеку времени выполнения многопоточной отладочной DLL (/ MDd) для шаблона vcapp?

У меня есть следующий файл проекта qmake (test.pro):

CONFIG += debug
TEMPLATE = vcapp

SOURCES = temp.cc

Я запустил qmake с помощью следующей команды в оболочке cygwin:

env QMAKESPEC=${QT_ROOT}/mkspecs/win32-msvc2010 ${QT_ROOT}/bin/qmake.exe -o test.vcxproj test.pro

Я открыл файл .vcxproj в Visual Studio 2010 и посмотрел на значение «Библиотеки времени выполнения». Для него установлено значение Многопоточная DLL отладки (/ MDd). Это было сюрпризом. Разве не должно было быть установлено значение Многопоточная отладка (/ MTd)? В конце концов, мой шаблон vcapp, а не vclib.

Нужно ли мне изменить какой-либо другой параметр, чтобы qmake мог сгенерировать файл .vcxproj, который использует Многопоточную отладку (/ MTd)?

Спасибо за понимание.


person R Sahu    schedule 25.08.2014    source источник
comment
qt-project.org/faq/answer/   -  person Hans Passant    schedule 25.08.2014


Ответы (1)


Благодарим Ганса Пассанта за предоставленную ссылку.

Из https://qt-project_rar_direct_a_dash_data_data_in_data_data_in_data_data_in_dash_data_data_in_d_###########################################

Qt построен с использованием переключателя -MD (d), который связывается с динамическими библиотеками времени выполнения C / C ++. Это необходимо, поскольку у нас возникли проблемы с памятью при использовании чего-либо, кроме флага -MD (d), и в целом его рекомендуется использовать. Вы не должны самостоятельно изменять этот флаг для своего приложения, потому что он конфликтует с тем, как построена библиотека Qt, если вы измените флаг на -MT. Вы также не должны менять его для Qt, так как это может вызвать проблемы.

Qt по-прежнему создается статически при использовании параметра -static, что означает, что вам не нужно распространять библиотеки DLL Qt при развертывании вашего приложения. Однако вам придется распространять среды выполнения C (если они еще не существуют на целевой машине), см. Нашу документацию по развертыванию [qt.nokia.com].

Если вы все равно решите изменить этот параметр, это можно будет сделать в файле qmake.conf для вашего qmakespec. Там, где написано -MD, вам нужно изменить его на -MT. Для Visual Studio 2005 также необходимо изменить соответствующие файлы в mkspecs / features, чтобы удалить вызов mt.exe. Как указано выше, мы не можем помочь вам решить какие-либо проблемы, с которыми вы столкнетесь в результате внесения этих изменений.

person R Sahu    schedule 25.08.2014