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

时间:2018-07-07 06:48:45

标签: qt qbs

请帮助我。

我有一个较早的用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"
}

链接步骤中,它会指出多种错误,

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"
}

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

尝试分别在Windows 10(64位)和Qt Creator 4.6和4.7 rc上链接旧版本和新版本的qbs。

1 个答案:

答案 0 :(得分:1)

这里的问题是qbs无法知道mylib具有Qt依赖性。在以前的版本中,它可能对您不小心起作用了,但这很幸运。 重写模块应该有帮助:

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