使用qmake/Qt Creator链接调试/发布库

Rob*_*Rob 25 c++ qt qmake

我正在使用Qt Creator并拥有一个依赖于C++静态库项目的Qt GUI项目.我想将GUI应用程序的发布版本与.lib的发布版本以及带有调试.lib的GUI应用程序的调试版本链接起来.我已经找到了如何通过在我的.pro文件中包含如下所示的行来向项目中添加其他库:

LIBS += -L./libfolder -lmylib.lib

但是我看不出如何使用不同的-L命令来发布和调试版本.

qmake是否有支持这样做?

Mar*_*utz 44

正常

debug:LIBS += ...
else:LIBS += ...
Run Code Online (Sandbox Code Playgroud)

当用户天真地使用CONFIG += debugCONFIG += release在调试和发布版本之间切换时,解决方案会中断(而且他们会这样做;没有人记得在CONFIG -= release release_and_debug之前说过CONFIG += debug:).

这是规范的范围debug:

CONFIG( debug, debug|release ) {
    # debug
    QMAKE_LIBDIR += "path/to/debug/lib"
} else {
    # release
    QMAKE_LIBDIR += "path/to/release/lib"
}
Run Code Online (Sandbox Code Playgroud)

参看 qmake文档.

编辑2013年11月17日:不要使用-LfooLIBS.规范的方法是添加路径(没有-L)QMAKE_LIBDIR.

  • Marc,你用规范的方式究竟是什么意思?没有足够声誉的人要求[在这里](http://stackoverflow.com/questions/24511097/qt-qmake-libdir-vs-libs). (2认同)
  • +1 因为“规范”形式适用于 windows 和 linux。我在 Windows 中遇到了一些麻烦,因为使用 debug{} release{} 总是链接到 debug{} 库。 (2认同)

Nic*_*ick 25

在您的项目文件中,您可以执行以下操作

debug {
    LIBS += -L./libfolder -lmydebuglib.lib
}

release {
    LIBS += -L./libfolder -lmyreleaselib.lib
}
Run Code Online (Sandbox Code Playgroud)

如果已将DEBUG添加到CONFIG qmake变量,则使用调试大括号内的位,如果将RELEASE添加到CONFIG变量,则类似于释放括号内的内容.

您也可以使用"!debug"而不是"release"(即当调试不在配置中时)

您可以在此处找到有关qmake的更多信息.

  • 请注意,如果你把括号放在下一行,它会窒息... :-( (2认同)