gpt4 book ai didi

c++ - 如何为静态 Qt 项目指定不同的库?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:51 26 4
gpt4 key购买 nike

对于我的 Qt 项目,我使用标准版本的 qmake 进行正常的调试和发布构建配置,但是我还需要使用不同的 qmake 静态构建来构建我的项目的静态(Windows 64 位)版本。我目前正在使用命令行和一个单独的 .pro 文件进行静态构建,但是我更愿意使用我用于非静态版本的相同 .pro 文件来执行此操作,并且如果可能的话从 Qt Creator 中进行。

我已经为 qmake 的静态版本创建了一个工具包,我现在的问题是我无法让 qmake 将我的项目链接到正确的库(我有单独的库版本用于调试、发布和静态构建) .我的专业文件如下所示:

CONFIG(debug, debug|release|static ) {
#debug build
LIBS += ../third-party-library/debug/library.lib
}

CONFIG( release, debug|release|static ) {
CONFIG(static, debug|release|static) {
#static release build
LIBS += ../third-party-library/static/library.lib
} else {
#non-static release build
LIBS += ../third-party-library/release/library.lib
}
}

在发布版本的项目设置中,我这样调用 qmake:

qmake.exe MyProject.pro -spec win32-msvc "CONFIG+=static"

我的问题是,除了通常的调试/发布配置之外,如何添加额外的构建配置,以及如何为其指定特定的库?

最佳答案

我觉得你的qmake定义有点的。 CONFIG(debug, debug|release) 语法是一个特殊的结构,因为两者总是被定义,这会发现实际使用了 witch build。对于static,情况并非如此,因此只需将其定义为:

CONFIG(debug, debug|release ) {
#debug build
LIBS += ../third-party-library/debug/library.lib
} else:CONFIG(release, debug|release) {
static {
#static release build
LIBS += ../third-party-library/static/library.lib
} else {
#non-static release build
LIBS += ../third-party-library/release/library.lib
}
}

为什么这不适用于 debugrelease,因此需要特殊的构造,请阅读此处:https://doc.qt.io/qt-5/qmake-test-function-reference.html#config-config

像那样使用 static 之所以有效,是因为 qmake 从 CONFIG 变量中读取这样的条件。它基本上是 contains(CONFIG, static) 的缩写。

关于c++ - 如何为静态 Qt 项目指定不同的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46798768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com