linker - 尽管在 qbs 配置文件中的 cpp.runtimeLibrary 中存在“静态”,但仍使用动态 runtimeLibrary
问题描述
我有一些 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'
我想保存模块化而不是重复这个参数。你有什么想法,为什么会这样?
解决方案
推荐阅读
- assembly - MIPS 中的未定义符号
- c# - 为什么我不能在 C# 中使用 System.Drawing.dll?
- javascript - 无法在 Chrome 的 Sources 窗口中更新 JS 局部变量
- azure - AZ Backup Job Show 的输出中缺少值
- angular - angular.io 锚链接菜单
- flutter - 失去对齐
- javascript - 动态Javascript增加复选框的值
- java - LocalDate 反序列化 Java 错误:com.fasterxml.jackson.databind.exc.MismatchedInputException:预期的数组或字符串
- vba - VBA - 无法从“xlsm”另存为“xlsx”
- java - 你如何连接两个哈希图值?