2015-05-14 21 views
0

我想在iOS應用程序中使用RabbitMq。由於recommended,我使用這個Objective-C wrapper,其中規定:沒有什麼可以建立。只需將源文件和頭文件包含到您的Xcode項目中,並再次鏈接到librabbitmq-c。但是,到目前爲止,我一直無法構建應用程序。我正在使用GitHub上提供的最新穩定版本。無法爲iOS應用程序構建rabbitmq-c

1 /我試圖在我的項目中包含所有文件(rabbitmq-objc和rabbitmq-c),並像往常一樣構建(如建議here)。按照XCode的建議,將幾種類型(uint8轉換爲u_int8_t)並解決一些導入(「amqp.h」,而不是< amqp.h>)後,最後出現此錯誤:Command /Applications/Xcode.app/內容/開發人員/工具鏈/ XcodeDefault.xctoolchain/usr/bin/clang失敗,退出代碼爲254。我深入清理項目,刪除〜/ Library/Developer/Xcode/DerivedData的內容,但沒有運氣。

2 /我已經又試圖通過命令行來構建的RabbitMQ-C通過CMake:

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

,然後導入在我的項目動態庫。在項目中進行鏈接時,XCode會抱怨爲iOS模擬器創建了,但與針對MacOSX文件構建的dylib鏈接。我已閱讀了一些關於如何解決此問題的文章,但我不確定如何繼續。

3 /因此我最終使用了CMake.app for MacOS,將生成器設置爲XCode。我導入了構建爲動態庫的rabbitmq-c.xcodeproj,並將頭路徑設置爲正確的文件夾。將其他鏈接器標誌設置爲-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'

我正在失去希望。有人能指引我走向正確的方向嗎?

回答

0

我終於找到了,這裏是進一步參考

1 /獲得最新rabbitmq-crabbitmq-objc庫。

2 /確保Cmake被更新(2.6或更高)

3 /安裝iOS-cmake

4 /在RabbitMQ的-c目錄

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 .. 
(用於模擬器或設備變化OSX_ARCHITECTURES和IOS_PLATFORM標誌)

5/in 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替換的uint8 OCCURENCES,通過#import < Foundation/Foundation.h>取代的#import < Cocoa/Cocoa.h> OCCURENCES,通過#import "amqp.h"#import "amqp_framing.h"取代的#import < amqp.h>#import < amqp_framing.h> OCCURENCES。

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 /建造項目。

相關問題