无法为iOS应用程序构建rabbitmq-c

我想在iOS应用程序中使用RabbitMq。 按照建议 ,我使用这个Objective-C 包装器 ,它规定: 没有什么可以构建的。 只需将源文件和头文件包含到Xcode项目中,然后再将其链接到librabbitmq-c。 但是,到目前为止,我无法构建应用程序。 我正在使用GitHub上提供的最新稳定版本。

1 /我试图在我的项目中包含所有文件(rabbitmq-objc和rabbitmq-c),并照常构建(如此处所示 )。 在将一些类型(uint8转换为u_int8_t)替换为XCode建议的几个导入(“amqp.h”而不是)之后,我最终得到了这个错误: Command /Applications/Xcode.app/Contents /Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang失败,退出代码为254 。 我深度清理了项目,删除了〜/ Library / Developer / Xcode / DerivedData的内容,但没有运气。

2 /然后我尝试通过命令行使用cmake构建rabbitmq-c:

mkdir build && cd build cmake .. cmake --build . --config Release 

然后在我的项目中导入为动态库。 在项目中链接时,XCode抱怨为iOS模拟器构建,但是为针对MacOSX文件构建的dylib进行链接 。 我已经阅读了一些关于如何解决这个问题的post,但我不确定如何继续。

3 /我最终使用CMake.app for MacOS,将生成器设置为XCode。 我已经导入了作为动态库构建的rabbitmq-c.xcodeproj,并将头路径设置为正确的文件夹。 在将其他链接器标志设置为-ObjC -all_load之后,我仍然收到错误: 没有这样的文件或目录:’/ Users / Guillaume / Library / Developer / Xcode / DerivedData / RabbitMQSandbox-bvhczedxhtejhxcwdqmdewzzexjj / Build / Products / Debug-iphonesimulator / librabbitmq.4.0.0.dylib’

我失去了希望。 有人能指出我正确的方向吗?

我终于找到了它,这里有待进一步参考

1 /获取最新的rabbitmq-c和rabbitmq-objc库。

2 /确保Cmake更新(2.6或更高)

3 /安装iOS-cmake

4 /在rabbitmq-c目录中(更改模拟器或设备的OSX_ARCHITECTURES和IOS_PLATFORM标志)

 mkdir build.ios && cd build.ios cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/iOS.cmake -DIOS_PLATFORM=SIMULATOR (resp. OS) -DCMAKE_IOS_DEVELOPER_ROOT=/Applications/Xcode.app/Contents/Developer -DCMAKE_IOS_SDK_ROOT=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -DCMAKE_OSX_ARCHITECTURES=x86_64 (resp. i386) -DBUILD_STATIC_LIBS=True -DENABLE_SSL_SUPPORT=False -GXcode .. 

5 /在build.os / librabbitmq中,将目录Debug重命名为Debug-iphonesimulator。 在XCode中打开librabbitmq-c.xcodeproj,选择目标rabbitmq-static,构建并关闭此项目。

6 /将在使用库librabbitmq.a的项目中导入。 在构建设置中,确保将“ Always Search User Paths设置为“是”,并且“ User Header Search Path包含rabbitmq-c / librabbitmq和rabbitmq-c / build.ios / rabbitmq-c的路径。

7 /复制项目中的rabbitmq-objc类,并为这些类设置-fno-objc-arc标志。

8 /用u_int8_t替换uint8u_int8_t ,用#import < Foundation/Foundation.h>替换#import < Cocoa/Cocoa.h>的出现,替换#import < amqp.h>#import < amqp_framing.h>通过#import "amqp.h"#import "amqp_framing.h"

9 /在AMQPConsumer.m中,在函数amqp_basic_consume中添加缺少的参数AMQP_EMPTY_TABLE,并在AMQPExchange.m中添加缺失

 #define AMQP_EXCHANGE_TYPE_DIRECT @"direct" #define AMQP_EXCHANGE_TYPE_FANOUT @"fanout" #define AMQP_EXCHANGE_TYPE_TOPIC @"topic" 

10 /建立项目。