在 qt5 中设置链接器选项

setting linker options in qt5

我使用以下选项静态编译了 qt 5.5.1:

configure -static -release -platform win32-msvc2013

现在当我尝试编译一个简单的 hello world 程序时,它不使用任何 qt 库(只是普通的 c++ 应用程序)。

问题是我无法使用 /MT 标志为程序设置链接器选项以使用静态 msvc 库。我将其添加到项目文件中:

CONFIG += static
QMAKE_CFLAGS_RELEASE += -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG += -Zi -MTd

我收到以下错误:

msvcprt.lib(locale0_implib.obj):-1: error: LNK2038: mismatch detected for     'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.obj

:-1: warning: LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

如果我没记错的话,这个问题在你使用visual studio时也会经常遇到。因此,请按照警告消息中所示修改构建配置,请在构建命令中添加 NODEFAULTLIB 预处理器。

QMAKE_CXXFLAGS_RELEASE += -O2 -MT
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CXXFLAGS_DEBUG += -Zi -MTd

你也可以试试

LIBS += -lLIBRARY /NODEFAULTLIB:library

我明白了,clean 命令没有删除 MAKEFILE.RELEASE 所以我不得不手动删除文件,qmake 生成了一个带有正确 -MT 参数的新文件。 感谢大家的帮助。