在 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 参数的新文件。
感谢大家的帮助。
我使用以下选项静态编译了 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 参数的新文件。 感谢大家的帮助。