You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SPM构建大小写区分的同名库与可执行文件?

解决SPM同时生成同名库与小写命令行程序的配置问题

首先修正你的Package.swift配置,核心问题在于可执行产品的targets列表错误地包含了库target,正确配置如下:

let package = Package(
    name: "Simulacra",
    products: [
        // 可执行程序仅关联对应的executableTarget,无需包含库target
        .executable(name: "simulacra", targets: ["Simulacra-cmd"]),
        .library(name: "Simulacra", targets: ["Simulacra"]),
    ],
    dependencies: [],
    targets: [
        .target(
            name: "Simulacra",
            dependencies: [],
            path: "Sources"
        ),
        .executableTarget(
            name: "Simulacra-cmd",
            dependencies: [
                .target(name: "Simulacra")
            ],
            path: "cmd"
        ),
        .testTarget(
            name: "Simulacra-tests",
            dependencies: [
                .target(name: "Simulacra")
            ],
            path: "Tests"
        ),
    ]
)

问题根源说明

  1. 原配置中可执行产品同时指定了Simulacra-cmd和Simulacra作为target,导致SPM与Xcode混淆两者角色,进而出现找不到库、错误尝试导入小写名称等问题。
  2. 你将库改名为SimulacraCore后能正常运行,本质是规避了名称关联的冲突隐患,但这并非必要的妥协方案。

编译问题的解决

修正配置后,Xcode的以下问题会自动修复:

  • 测试产物将正确生成到派生数据目录,而非项目根目录
  • 不会再出现找不到Simulacra库的错误
  • 导入语句import Simulacra可正常使用

内容的提问来源于stack exchange,提问作者drekka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:50:23