2011-12-01 45 views
8

我正在使用靜態庫包含第三方庫(源代碼)。它僅用於設備(​​因爲它包含一些ARM彙編程序),我不想爲模擬器構建它(我只是想讓我的應用程序在那裏編譯,所以我可以測試GUI)。編譯XCode中的設備/模擬器的不同文件

  • 僅爲模擬器創建另一個目標不是一個選項,因爲我的項目將我的庫引用爲依賴項,這將是一個噩夢來維護。
  • 爲這些文件添加#if(TARGET_OS_IPHONE)也不是一個選項,因爲這些不是我的原始資源,我想更新它們以便更新(有超過200個文件,並且我不需要修改所有的人)

我正在尋找一種方式(類似於#如果(TARGET_OS_IPHONE)在源文件中),這將在IDE本身的工作(這樣我就可以排除根據實際的構建過程文件我的目標架構)。我發現唯一的一個選擇是從目標中排除/包含文件 - 但不是針對特定體系結構。

有沒有辦法爲每個特定文件設置架構條件?

+0

什麼語言的庫接口,Obj-C,C++或純C?有多少種方法包含界面? – Kay

+0

我實際上有幾個庫,大部分都在C++中,而在Obj-C中很少。它們都不是模擬器所必需的(它們都涉及音頻/視頻處理),​​但我至少希望項目能夠在模擬器上正確構建,因爲它在那裏測試UI的速度更快。 –

+0

聽起來好像沒有簡單的解決方案。如果可能的話,嘗試將抽象工廠創建的一個或多個外觀中的所有調用分離到庫中,具體取決於目標。然後使用模擬對象的x86代碼 – Kay

回答

1

最好的辦法是將第三方庫分隔成一個新的目標,將其構建爲靜態框架。將其設置爲項目的依賴項,然後將靜態框架設置爲有條件鏈接,如Apple所述:http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/ios_development_workflow/115-Configuring_Applications/configuring_applications.html#//apple_ref/doc/uid/TP40007959-CH19-SW7

您可以通過在項目導航器中選擇項目然後點擊添加目標來添加新目標編輯器窗格底部的按鈕。您可以設置一個可可觸摸靜態庫,然後將相關的.m或.c文件分配爲僅屬於該目標。然後選擇您的應用程序的目標,並在「構建階段」選項卡的「目標相關性」部分中添加靜態框架。

+0

這正是我正在尋找,謝謝! –

+0

這個資源的更新鏈接是什麼? – Tobias

相關問題