【问题标题】:Qbs StaticLibrary on MacOSMacOS 上的 Qbs 静态库
【发布时间】:2017-11-26 12:15:14
【问题描述】:

我尝试将现有项目从 qmake 移动到 qbs,到目前为止一切正常,但我无法在 MacOS 上链接到该项目中的谷歌测试静态库,而在 Windows 上它工作正常。

在 MacOS 上我得到:-1: error: symbol(s) not found for architecture x86_64

GitHub repo of the project

googletest.qbs:

import qbs

StaticLibrary {
    name: "GoogleTest"
    files: [
        "googletest/googletest/src/gtest-all.cc",
        "googletest/googlemock/src/gmock-all.cc"
    ]

    cpp.includePaths: [
        "googletest/googletest/include",
        "googletest/googlemock/include",
        "googletest/googletest",
        "googletest/googlemock"
    ]

    Depends { name: "cpp" }
    Export {
        Depends { name: "cpp" }
        cpp.includePaths: [
            "googletest/googletest/include",
            "googletest/googlemock/include"
        ]
    }
}

test.qbs:

import qbs

QtApplication {
    name: "Test"
    targetName: "Test"

    Depends { name: "Qt"; submodules: ["core","testlib"]; versionAtLeast: "5.6" }
    Depends { name: "GoogleTest"}

    cpp.cxxLanguageVersion: "c++11"
    consoleApplication: true

    files: [
        "QtTypePrinters.h",
        "main.cpp",
        "QStringTest.cpp"
    ]
}

【问题讨论】:

    标签: c++ macos qt static-libraries qbs


    【解决方案1】:

    您需要在静态库产品中设置以下属性:

    cpp.cxxLanguageVersion: "c++11"
    cpp.cxxStandardLibrary: "libc++"
    cpp.minimumMacosVersion: "10.7" // or higher
    

    默认情况下,Qbs 只是让编译器推断默认值。 gtest 恰好需要 C++11 和 libc++,而这又仅在 macOS 10.7 及更高版本上受 Apple 支持。

    【讨论】:

      【解决方案2】:

      您确定这是来自链接器的全部错误消息吗?当然也提到了实际缺少的符号?

      【讨论】:

      • 如果我通过 cpp.libraryPaths 和 cpp.staticLibraries 链接到该库,它可以工作,但这不是我想要的。
      • 请提供完整的错误信息,以便我们正确诊断问题。
      • 可能是标准库兼容性问题?您还没有粘贴整个编译输出,因此我们无法确定,但请尝试将 'cpp.cxxLanguageVersion: "c++11"' 也添加到您的静态库中。
      • 请看项目的github仓库
      • @emKaroly 最后,设置cpp.minimumMacosVersion: "10.7"(或更高版本)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多