我正在尝试在一个RabbitMq应用程序中使用iOS。作为推荐,我使用的是这个目标-C 包装器,它规定:没有什么可构建的。只需将源文件和头文件包含到Xcode项目中,并将其链接到librabbitmq-c。但是,到目前为止,我还无法构建这个应用程序。我正在使用GitHub上可用的最后一个稳定版本。
1/我尝试在我的项目中包含所有文件(不管是rabbitmq-objc还是rabbitmq-c),并按照建议的这里进行构建。在替换了几个类型(将/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang替换为u_int8_t)并按照XCode的建议解决了一些导入("amqp.h“而不是< amqp.h>)后,我得到了以下错误:命令u_int8_t失败,退出代码254失败。我对项目进行了深度清理,删除了~/Library/Developer/Xcode/派生数据的内容,但没有运气。
[2]然后,我尝试通过命令行使用cmake构建rabbitmq-c:
mkdir build && cd build
cmake ..
cmake --build . --config Release然后作为动态库导入到我的项目中。在项目中链接时,XCode会抱怨iOS模拟器的构建,但是针对为MacOSX文件构建的dylib进行链接。我读过几篇关于如何处理这个问题的文章,但我不知道具体如何进行。
3/因此,我终于将CMake.app用于MacOS,将生成器设置为XCode。我导入了作为动态库构建的rabbitmq-c.xcodeproj,并将头路径设置为正确的文件夹。在将其他链接器标志设置为'/Users/Guillaume/Library/Developer/Xcode/DerivedData/RabbitMQSandbox-bvhczedxhtejhxcwdqmdewzzexjj/Build/Products/Debug-iphonesimulator/librabbitmq.4.0.0.dylib'. -all_load后,仍然会得到一个错误:没有这样的文件或目录:-ObjC
我正在失去希望。有人能指点我朝正确的方向吗?
发布于 2015-05-19 13:08:15
我终于找到了,这是供进一步参考的。
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-iphone仿真器。在XCode中打开librabbitmq-c.xcodeproj,选择目标rabbitmq-静态,构建并关闭该项目。
6/导入将使用librabbitmq.a库的项目。在构建设置中,确保Always Search User Paths设置为Yes,并且User Header Search Path包含到rabbitmq-c/librabbitmq和rabbitmq-c/build.ios/rabbitmq-c的两个路径。
7/复制项目中的rabbitmq-objc类,并为这些类设置-fno-objc弧标志。
8用uint8代u_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_basic_consume,在AMQPExchange.m中添加缺失参数
#define AMQP_EXCHANGE_TYPE_DIRECT @"direct"
#define AMQP_EXCHANGE_TYPE_FANOUT @"fanout"
#define AMQP_EXCHANGE_TYPE_TOPIC @"topic"10建造项目。
https://stackoverflow.com/questions/30242125
复制相似问题