我有以下qmake项目文件(test.pro):
CONFIG += debug
TEMPLATE = vcapp
SOURCES = temp.cc
我在cygwin shell中使用以下命令运行了qmake:
env QMAKESPEC=${QT_ROOT}/mkspecs/win32-msvc2010 ${QT_ROOT}/bin/qmake.exe -o test.vcxproj test.pro
我在Visual Studio 2010中打开了.vcxproj文件,并查看了“运行时库”的值。它设置为多线程调试DLL(/ MDd)。这是一个惊喜。它不应该被设置为多线程调试(/ MTd)吗?毕竟,我的模板是vcapp
,而不是vclib
。
我是否需要更改其他设置以指示qmake生成使用多线程调试(/ MTd)的.vcxproj文件?
感谢您的见解。
答案 0 :(得分:1)
感谢Hans Passant提供的链接。
使用-MD(d)开关构建Qt,该开关链接动态C / C ++运行时库。这是必要的,因为我们在使用除-MD(d)标志之外的任何东西时都遇到了内存问题,并且通常建议使用。您不应该自己为您的应用程序更改此标志,因为如果您将标志更改为-MT,它将与Qt库的构建方式发生冲突。您也不应该为Qt更改它,因为它可能会导致问题。
在使用-static选项时,Qt仍然是静态构建的,这意味着在部署应用程序时不需要分发Qt dll。您必须分发C运行时(如果目标计算机上尚不存在),请参阅我们的部署文档[qt.nokia.com]。
如果您仍然选择更改此设置,则可以在qmakepec的qmake.conf文件中完成。在哪里说-MD你需要把它改成-MT。对于Visual Studio 2005,还需要更改mkspecs / features中的相关文件以删除对mt.exe的调用。如上所述,我们无法支持您因进行这些更改而遇到的任何问题。