У меня есть проект 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'
Я бы хотел сохранить модульность и не дублировать этот параметр.Есть ли у вас идеи, почему это происходит?