Xcode 12.5 не разрешает SwiftPackageDependency с целью .systemLibrary на M1

Xcode 12.5 на MBP с M1 не может разрешить зависимость пакета с целью .systemLibrary. Запуск Xcode без Россета.

В проект установлено 2 пакета SPM. Оба они добавили в проект .xcworkspace и только один из них связан с приложением. Оба пакета являются локальными зависимостями. A пакет имеет пакет как зависимость и B пакет имеет libgit2как зависимость .systemLibrary. Затем, если я открываю проект, Xcode не может найти pkg-config, а затем не разрешает зависимость libgit2.

Этого не произойдет, если я создам A pbxproj с участием swift package generate-xcodeproj, в этом случае проект разрешается нормально, и я могу построить его без каких-либо проблем.

А это:

      // swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "A",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "A",
            targets: ["A"]
        ),
    ],
    dependencies: [
        .package(path: "../B")
    ],
    targets: [
        .target(
            name: "A",
            dependencies: ["B"]
        ),
        .testTarget(
            name: "ATests",
            dependencies: ["A"]
        ),
    ]
)

B Package.swift является:

      // swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "B",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "B",
            targets: ["B"]
        )
    ],
    dependencies: [],
    targets: [
        .systemLibrary(
            name: "Clibgit2",
            pkgConfig: "libgit2",
            providers: [
                .brew(["libgit2"])
            ]
        ),
        .target(
            name: "B",
            dependencies: [
                .target(name: "Clibgit2")
            ]
        ),
        .testTarget(
            name: "BTests",
            dependencies: ["B"]
        )
    ]
)

В Clibgit2 цель хорошо настроена с module.modulemap а также shim.h файлы.

Я проверил pkg-config установлен и содержит информацию о пакете libgit2 с pkg-config --list Также я открыл проект на Intel Mac и работает нормально.

libgit2 устанавливается brew.

1 ответ

Спасибо NeoNach!!Xcode смотрит только на /opt/brew а также /usr/local. Место домашнего приготовления для чипов M1 находится на /opt/homebrew так что вы можете установить собственный путь, используя com.apple.dt.Xcode.IDEHombrePrefixPath.

defaults write com.apple.dt.Xcode IDEHomebrewPrefixPath /opt/homebrew

Ссылка на твит: https://twitter.com/NeoNacho/status/1412514541343166467

Другие вопросы по тегам