2009-07-22 67 views
0

是否有可能擁有包含Cocoa(MacOSX)和CocoaTouch(iPhone)版本的組件的Xcode項目文件?可可(OSX)和CocoaTouch(iPhone)組件在同一個Xcode項目文件中?

我以爲我越來越近了,直到我意識到您需要在項目設置中設置「Base SDK for All Configurations」才能調用交叉編譯器(並且可以找到並正確地使用任何CocoaTouch框架由Xcode處理)。

由於這是一個項目範圍內的設置,我不知道如何在同一個項目文件中同時擁有MacOSX和iPhoneOS目標。

指定:

SDKROOT = iphoneos3.0 
在xcconfig文件(iPhone只目標使用)

似乎並沒有工作。

+0

嗨jhoule, 我想知道你爲什麼需要在一個單一的項目?這似乎是一種可以避免的情況。 – paulthenerd 2009-07-22 19:16:18

+0

這主要是代碼組織的問題。 說我有LibA,LibB和LibC。我目前每個都有一個.xcodeproj文件,它們幾乎是獨立的。 如果我需要按平臺進行拆分(OSX vs. iPhone),我最終會得到6個項目文件。如果我從LibA添加/刪除源文件,我需要更新2個項目文件。同樣,每當我需要設置預處理器定義,私人圖書館等。 – jhoule 2009-07-22 19:47:30

回答

1

是的,你可以,但有一些小故障。

好吧,首先,您可以用幾種方式覆蓋任何Base SDK。一個是你可以在檢查員底部的設備上和「添加生成設置條件」,它允許你根據目標架構等條件來設置任何生成設置。

二,即使你有一個項目它可以被每個目標覆蓋。所以如果你有單獨的目標,你可以用SDKROOT將SDKROOT添加到各個目標中。第三,在Xcode窗口彈出窗口中選擇的SDK將覆蓋evertyhing其他部分。所以如果你在彈出窗口中除了「Base SDK」之外還有其他東西,它就會被使用。另外,如果切換(可以說從「Base SDK」到「iPhone Simulator」),然後將目標切換到不支持當前選定SDK的目標,它將顯示爲取消選擇,但實際上並不正確自動更換Base SDK,您需要在彈出窗口中重新選擇它。

作爲一個聚合的一部分,我仍然無法始終如一地將多個arch構建在一起(例如,有一個OS X目標可以預處理某些資源,以便它可以用作以後目標建築中的構建階段一個iPhone應用程序)。

相關問題