2009-11-15 51 views
7

我的客戶端向我提供了兩個預編譯庫blah-device.a和blah-simulator.a。如何讓xcode在設備編譯模式下使用blah-device.a,並在模擬器編譯模式下使用模擬器?如何在XCode for iPhone中爲不同的構建配置文件鏈接不同的預編譯庫?

我的客戶給了我這些指令

  • 打開目標組(在組&文件面板),右鍵單擊 項目圖標,然後選擇Add> 現有框架。
  • 在鏈接庫部分,單擊添加庫圖標(+)圖標, 然後單擊添加其他。
  • 選擇blah-device.a(用於直接在iPhone 設備上開發)或blah-simulator.a(用於在iPhone Simulator上開發的 ), ,然後單擊添加。
  • 我已經複製的頭文件在那裏,但這些指令不使建築容易以不同的配置。

    如何獲取Xcode的鏈接等等,device.a與設備配置文件和等等,simulator.a建設與模擬器型材建築時什麼時候?

    任何幫助,非常感謝。

    回答

    5

    有一個更簡單的方法來做到這一點。您可以在一個目標下複製「庫搜索路徑」,併爲每個目標設置不同的體系結構。然後,您可以爲模擬器和設備設置不同的路徑。

    1

    最簡單的方法是通過複製現有的目標來創建兩個單獨的目標。命名一個「Foo Device」和另一個「Foo Simulator」。然後右鍵單擊XCode中的blah-device.a,選擇Targets選項卡並確保「Foo Device」目標被選中,並且「Foo Simulator」目標被選中OFF。

    重複的Balah的-simulator.a但這次「富設備」的目標是關和「Foo模擬器」目標被選中ON。

    現在,只要你想要做一個模擬器構建確保您選擇從Active SDK彈出與「富模擬器」,從目標彈​​出式模擬器。對於器件測試,選擇Device和「Foo Device」目標。

    +0

    謝謝!無論如何要完成這個沒有另一個目標,只使用XCode配置文件的構建設置? – CVertex 2009-11-16 03:42:29

    +0

    問題是如果blah-device.a和blah-simulator.a都導出相同的符號。解決這個問題的一個方法是在頭文件中基於#if TARGET_IPHONE_SIMULATOR ...進行測試,並將Foo定義爲FooDevice與FooSimulator的預處理器宏。然後你可以包含這兩個庫,並且正確的符號被鏈接。但是,如果兩個庫都包含相同的鏈接器符號,則會出現重複的符號錯誤。在這種情況下,唯一的辦法是排除一個人在一種情況下與另一種情況下的聯繫。您可以擺弄鏈接器路徑值,但使用多個目標會更容易。 – Ramin 2009-11-16 05:20:32

    14

    以供將來參考,以處理這種情況的好方法是將glob的不同架構。一個公司到一個單一的一個,你可以包括在XCode中。你可以用命令行工具做到這一點:

    脂libx.a liby.a - 創建 - 輸出libz.a

    如果libx.a是ARMv6的和ARMv7和liby.a是i386的例如,生成的庫libz.a將是armv6,armv7和i386。

    您還可以檢查通過脂-info以.a文件。

    希望這會有所幫助。:)

    2

    你可以使用不同的連結路對不同的庫 linking path's

    +0

    這是一個很棒的提示,謝謝! – natevw 2018-02-26 20:42:57

    相關問題