假设我已经下载了一些带有 header 和二进制文件的库xyz,并将其放置在标准搜索路径之外的某处。对于每个产品,我可以添加搜索路径和库以链接到cpp.includePaths,cpp.libraryPaths,cpp.staticLibraries等。

有没有更好的[标准]方法可以做到这一点?如果要在项目中构建库,则似乎可以在Exports项中定义路径,然后在每个Product中使用Depends项来自动设置路径。这似乎是一个很好的机制,我想知道是否也没有办法将其用于外部依赖项。

QBS文档有点薄...

谢谢!

最佳答案

通常,您将为xyz创建自己的模块。您可以通过设置项目的qbsSearchPaths-property,添加QBS在其中搜索模块和导入的位置。例如。通过将其设置为“qbs”,QBS会在项目的“qbs/modules”子目录中搜索其他模块。

您可以在其中放置一个名为“xyz.qbs”的文件,如下所示:

import qbs
Module {
    Depends { name: "cpp" }
    property string xyzPath: "the/xyz/path"
    cpp.includePaths: xyzPath + "/include"
    cpp.libraryPath: xyzPath + "/lib"
    cpp.staticLibraries: "xyz"
}

然后,您可以通过在项目中添加一个Depend来使用它:
import qbs
Project {
    qbsSearchPaths: "qbs"
    CppApplication {
        name: "myApp"
        files: "src/**"
        Depends { name: "xyz" }
    }
}

关于c++ - 如何在Qt QBS中引用外部库依赖关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32367400/

10-12 00:35