如何为静态 Qt 项目指定不同的库?
How do I specify different libraries for a static Qt project?
对于我的 Qt 项目,我使用标准版本的 qmake 进行正常的调试和发布构建配置,但是我还需要使用不同的 qmake 构建静态(Windows 64 位)版本的项目, qmake 的静态构建。我目前正在使用命令行和一个单独的 .pro 文件进行静态构建,但是我更愿意使用我用于非静态版本的相同 .pro 文件来执行此操作,并且如果可能的话从 Qt Creator 中进行。
我已经为 qmake 的静态版本创建了一个工具包,我现在的问题是我无法根据适当的库将 qmake 用于 link 我的项目(我有单独的库版本用于调试,发布和静态构建)。我的专业文件如下所示:
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"
我的问题是如何在通常的 debug/release 之外添加额外的构建配置,以及如何为其指定特定的库?
我觉得你的qmake定义有点的。 CONFIG(debug, debug|release)
语法是一个特殊的结构,因为总是两者都被定义,这发现 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
}
}
为什么这不适用于 debug
和 release
,因此需要特殊构造,请阅读此处:https://doc.qt.io/qt-5/qmake-test-function-reference.html#config-config
像这样使用 static
只有效,因为 qmake 从 CONFIG
变量读取这样的条件。它基本上是 contains(CONFIG, static)
.
的缩写
对于我的 Qt 项目,我使用标准版本的 qmake 进行正常的调试和发布构建配置,但是我还需要使用不同的 qmake 构建静态(Windows 64 位)版本的项目, qmake 的静态构建。我目前正在使用命令行和一个单独的 .pro 文件进行静态构建,但是我更愿意使用我用于非静态版本的相同 .pro 文件来执行此操作,并且如果可能的话从 Qt Creator 中进行。
我已经为 qmake 的静态版本创建了一个工具包,我现在的问题是我无法根据适当的库将 qmake 用于 link 我的项目(我有单独的库版本用于调试,发布和静态构建)。我的专业文件如下所示:
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"
我的问题是如何在通常的 debug/release 之外添加额外的构建配置,以及如何为其指定特定的库?
我觉得你的qmake定义有点的。 CONFIG(debug, debug|release)
语法是一个特殊的结构,因为总是两者都被定义,这发现 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
}
}
为什么这不适用于 debug
和 release
,因此需要特殊构造,请阅读此处:https://doc.qt.io/qt-5/qmake-test-function-reference.html#config-config
像这样使用 static
只有效,因为 qmake 从 CONFIG
变量读取这样的条件。它基本上是 contains(CONFIG, static)
.