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

Swift未使用pkg-config加载rabbitmq-c系统库的问题排查

Swift Package未读取librabbitmq.pc配置导致编译失败

背景配置

  • 通过Homebrew安装了rabbitmq-c和openssl@3
  • Package.swift中定义了systemLibrary目标,指定pkgConfig: "librabbitmq",并配置brew提供者:
let package = Package(
    name: "swift-rabbitmq",
    platforms: [
        .macOS(.v12)
    ],
    products: [
        .library(
            name: "CRabbitMQ",
            targets: [
                "CRabbitMQ"
            ])
    ],
    dependencies: [
        
    ],
    targets: [
        .systemLibrary(
            name: "CRabbitMQ", pkgConfig: "librabbitmq", providers: [
                .brewItem(["rabbitmq-c"])
            ]),
        .testTarget(
            name: "TestsCRabbitMQ",
            dependencies: [
                .target(name: "CRabbitMQ")
            ])
    ]
)
  • 手动执行pkg-config --cflags librabbitmq能返回正确的头文件路径:
$ pkg-config --cflags librabbitmq
-I/opt/homebrew/Cellar/rabbitmq-c/0.11.0/include -I/opt/homebrew/Cellar/openssl@3/3.0.5/include

本地文件内容

modulemap文件

module CRabbitMQ [system] {
    header "rabbitmq.h"
    link "rabbitmq"
    export *
}

rabbitmq.h头文件

#ifndef rabbitmq_h
#define rabbitmq_h

#import <amqp.h>
#import <amqp_framing.h>
#import <amqp_ssl_socket.h>
#import <amqp_tcp_socket.h>

#endif /* rabbitmq_h */

问题现象

编译项目时,Swift编译器提示rabbitmq.h中引用的amqp.h等头文件找不到,但手动通过以下命令指定编译参数可正常运行:

swift test -Xcc -I/opt/homebrew/Cellar/rabbitmq-c/0.11.0/include -Xlinker -L/opt/homebrew/Cellar/rabbitmq-c/0.11.0/lib -Xlinker -lrabbitmq

疑问

为何Swift Package没有自动使用librabbitmq.pc中的配置?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:55:23