不能在新的 qbs 版本 (1.12) 中包含静态库

Can't include static lib in new qbs version (1.12)

请帮帮我。

我之前有一个用 qt 构建的静态库,它使用 Qt 库。下一个应用程序可在 qbs 1.11 版本中编译,而不是在新的 qbs 1.12:

Application {
    qbsSearchPaths: "path_to_my_modules"
    Depends { name: "Qt.widgets"  }
    Depends { name: "mylibs.mylib" }
    files: "main.cpp"
}

linking 步它排除了多个错误,有点像:

undefined reference to `_imp___ZN7QString6appendERKS_'
undefined reference to `_imp___Z18qSetMessagePatternRK7QString'

...等等

模块 mylib 看起来像:

import qbs

Module {
    Depends { name: "cpp" }
    cpp.includePaths: path
    cpp.staticLibraries: path + "/libmylib.a"
}

这是一个错误,还是我需要做一些更正?

尝试 link 在 Windows 10(64 位)上使用 Qt Creator 4.6 和 4.7 rc 分别用于新旧 qbs 版本。

这里的问题是qbs无法知道mylib有Qt依赖。它可能在以前的版本中意外地为您工作,但这只是运气。 重写您的模块应该有所帮助:

Module {
    Depends { name: "Qt.core" } // Or whatever modules mylib uses
    Group {
        filesAreTargets: true
        fileTags: "staticlibrary"
        filePath: path + "/libmylib.a"
    }
}