我有一些 qbs 项目,并且遇到了一些与运行时库链接的奇怪行为。
我使用了 Qt 静态库和自定义模块
//---------MyQtGuiApplication.qbs
import qbs
MyQtApplication {
Depends { name: "Qt.gui" }
Depends {
name: "Qt"
submodules: Qt.gui.defaultQpaPlugin
condition: linkDefaultQpaPlugin && Qt.gui.defaultQpaPlugin
}
property bool linkDefaultQpaPlugin: Qt.gui.isStaticLibrary
}
//---------MyQtApplication.qbs
import qbs
MyNativeBinary {
type: ["application"]
Depends { name: "Qt.core" }
}
//---------MyNativeBinary.qbs
import qbs
import qbs.Environment
NativeBinary {
Depends { name: "cpp" }
property bool err: console.error(name + "______" + cpp.runtimeLibrary)
}
和简单的例子
//---------test.qbs
import qbs
Project {
MyQtGuiApplication {
name: "test"
Depends { name: "cpp" }
// cpp.runtimeLibrary: "static"
files: ["*.h", "*.cpp", "*.ui", "*.qrc", "*.rc"]
}
}
我明确定义profiles.windows-x86-msvc14.cpp.runtimeLibrary: "static"
了,它不会被继承或 qbs 文件覆盖。但是如果我不在 qbs 文件中定义它,我会得到
error LNK2038: mismatch detected for 'RuntimeLibrary'
我想保存模块化而不是重复这个参数。你有什么想法,为什么会这样?