无法为 iOS 应用构建 rabbitmq-c
Not able to build rabbitmq-c for iOS application
我正在尝试在 iOS 应用程序中使用 RabbitMq。如recommended, I am using this Objective-C wrapper,其中规定:没有什么可建的。只需将源文件和 header 文件包含到您的 Xcode 项目中,然后 link 再次 librabbitmq-c。 但是,到目前为止我无法构建该应用程序.我正在使用 GitHub.
上可用的最新稳定版本
1/ 我已尝试在我的项目中包含所有文件(rabbitmq-objc 和 rabbitmq-c),并照常构建(按照建议 here)。在按照 XCode 的建议替换了一些类型(uint8 到 u_int8_t)并解决了一些导入("amqp.h" 而不是 < amqp.h>)之后,我最终遇到了这个错误: 命令 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 失败,退出代码为 254。我深度清理了项目,删除了 ~/Library/Developer/Xcode/DerivedData 的内容,但没有成功。
2/ 然后我尝试通过 command-line 使用 cmake 构建 rabbitmq-c :
mkdir build && cd build
cmake ..
cmake --build . --config Release
然后在我的项目中作为动态库导入。在项目中 linking 时,XCode 抱怨 为 iOS 模拟器构建,但 linking 反对为 MacOSX 文件构建的 dylib .我已经阅读了一些关于如何解决这个问题的文章 post,但我不确定具体如何进行。
3/ 因此,我终于在 MacOS 上使用了 CMake.app,将生成器设置为 XCode。我导入了作为动态库构建的 rabbitmq-c.xcodeproj,并将 header 路径设置为正确的文件夹。将其他 linker 标志设置为 -ObjC -all_load 后,我仍然收到错误消息:no such file or directory: '/Users/Guillaume/Library/Developer/Xcode/DerivedData/RabbitMQSandbox-bvhczedxhtejhxcwdqmdewzzexjj/Build/Products/Debug-iphonesimulator/librabbitmq.4.0.0.dylib'.
我正在失去希望。有人可以指出我正确的方向吗?
终于找到了,留给大家参考
1/ 获取最新的 rabbitmq-c and 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,select 目标 rabbitmq-static,构建并关闭该项目。
6/ 导入将使用库 librabbitmq.a 的项目。在构建设置中,确保 Always Search User Paths
设置为 Yes 并且 User Header Search Path
包含到 rabbitmq-c/librabbitmq 和 rabbitmq-c/build.ios/rabbitmq-c.[=25= 的路径]
7/ 复制项目中的rabbitmq-objc 类,并为那些类.
设置-fno-objc-arc标志
8/ 将出现的 uint8
替换为 u_int8_t
,将出现的 #import < Cocoa/Cocoa.h>
替换为 #import < Foundation/Foundation.h>
,将出现的 #import < amqp.h>
和 [=19= 替换] #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/ 构建项目。
我正在尝试在 iOS 应用程序中使用 RabbitMq。如recommended, I am using this Objective-C wrapper,其中规定:没有什么可建的。只需将源文件和 header 文件包含到您的 Xcode 项目中,然后 link 再次 librabbitmq-c。 但是,到目前为止我无法构建该应用程序.我正在使用 GitHub.
上可用的最新稳定版本1/ 我已尝试在我的项目中包含所有文件(rabbitmq-objc 和 rabbitmq-c),并照常构建(按照建议 here)。在按照 XCode 的建议替换了一些类型(uint8 到 u_int8_t)并解决了一些导入("amqp.h" 而不是 < amqp.h>)之后,我最终遇到了这个错误: 命令 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang 失败,退出代码为 254。我深度清理了项目,删除了 ~/Library/Developer/Xcode/DerivedData 的内容,但没有成功。
2/ 然后我尝试通过 command-line 使用 cmake 构建 rabbitmq-c :
mkdir build && cd build
cmake ..
cmake --build . --config Release
然后在我的项目中作为动态库导入。在项目中 linking 时,XCode 抱怨 为 iOS 模拟器构建,但 linking 反对为 MacOSX 文件构建的 dylib .我已经阅读了一些关于如何解决这个问题的文章 post,但我不确定具体如何进行。
3/ 因此,我终于在 MacOS 上使用了 CMake.app,将生成器设置为 XCode。我导入了作为动态库构建的 rabbitmq-c.xcodeproj,并将 header 路径设置为正确的文件夹。将其他 linker 标志设置为 -ObjC -all_load 后,我仍然收到错误消息:no such file or directory: '/Users/Guillaume/Library/Developer/Xcode/DerivedData/RabbitMQSandbox-bvhczedxhtejhxcwdqmdewzzexjj/Build/Products/Debug-iphonesimulator/librabbitmq.4.0.0.dylib'.
我正在失去希望。有人可以指出我正确的方向吗?
终于找到了,留给大家参考
1/ 获取最新的 rabbitmq-c and 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,select 目标 rabbitmq-static,构建并关闭该项目。
6/ 导入将使用库 librabbitmq.a 的项目。在构建设置中,确保 Always Search User Paths
设置为 Yes 并且 User Header Search Path
包含到 rabbitmq-c/librabbitmq 和 rabbitmq-c/build.ios/rabbitmq-c.[=25= 的路径]
7/ 复制项目中的rabbitmq-objc 类,并为那些类.
设置-fno-objc-arc标志8/ 将出现的 uint8
替换为 u_int8_t
,将出现的 #import < Cocoa/Cocoa.h>
替换为 #import < Foundation/Foundation.h>
,将出现的 #import < amqp.h>
和 [=19= 替换] #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/ 构建项目。