对于我的Qt项目,我使用标准版本的qmake进行正常的调试和发布构建配置,但是我还需要使用qmake的不同静态构建来构建项目的静态(Windows 64位)版本。我目前正在使用命令行和separete .pro文件进行静态构建,但是我更喜欢使用我用于非静态版本的相同.pro文件,如果可能的话,从Qt创建者中执行此操作。
我已经为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"
我的问题是除了常用的调试版本之外,我该如何添加额外的构建配置,以及如何为其指定特定的库?
答案 0 :(得分:1)
我认为你的qmake定义有点儿。 CONFIG(debug, debug|release)
语法是一个特殊的构造,因为它们都是定义的,并且发现实际上使用了构造。对于静态,情况并非如此,因此只需将其定义为:
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)
的缩写。