【问题标题】:Linking with a debug/release lib with qmake/Qt Creator使用 qmake/Qt Creator 与调试/发布库链接
【发布时间】:2010-11-10 22:25:48
【问题描述】:

我正在使用 Qt Creator 并且有一个依赖于 C++ 静态库项目的 Qt GUI 项目。我想将 GUI 应用程序的发布版本与 .lib 的发布版本和 GUI 应用程序的调试版本与调试 .lib 链接。我发现了如何通过在我的 .pro 文件中包含如下行来向项目添加其他库:

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

但我看不出如何使用不同的 -L 命令进行发布和调试构建。

qmake 是否支持这样做?

【问题讨论】:

    标签: c++ qt qmake


    【解决方案1】:

    正常

    debug:LIBS += ...
    else:LIBS += ...
    

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

    这是debug 范围的规范方法:

    CONFIG( debug, debug|release ) {
        # debug
        QMAKE_LIBDIR += "path/to/debug/lib"
    } else {
        # release
        QMAKE_LIBDIR += "path/to/release/lib"
    }
    

    参照。 the qmake docs.

    编辑 2013-11-17:不要在 LIBS 中使用 -Lfoo。规范的方法是将路径(不带-L)添加到QMAKE_LIBDIR

    【讨论】:

    • 你所说的规范方式到底是什么意思,马克?没有足够声誉的人在here 中问这个问题。
    • +1 因为“规范”形式适用于 windows 和 linux。我在 Windows 中遇到了一些麻烦,因为使用 debug{} release{} 总是链接到 debug{} 库。
    【解决方案2】:

    在你的项目文件中你可以做这样的事情

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

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

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

    你可以在qmakehere找到更多信息。

    【讨论】:

    • 请注意,如果您将大括号放在下一行,它会窒息...:-(
    • Windows 也一样吗?如果我在 Lib 文件的路径中有空间怎么办。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2015-09-25
    相关资源
    最近更新 更多