Lássunk hozzá. Nem kisebb dolgot fogunk elkövetni, mint iPhone.sdk-t fogunk összeállítani. Néhány napos nézelődés és kísérletezés után arra jutottam, hogy a következő néhány könyvtár létrehozásával ki lehet alakítani az alap struktúrát. Természetesen nem a feladat bonyolultsága miatt tartott ilyen sokáig, hanem szerettem volna rendesen körüljárni minden lehetőséget és kísérleteztem.
mkdir -p /Developer/SDKs/iPhone.sdk/System/Library/Frameworks
mkdir -p /Developer/SDKs/iPhone.sdk/Developer
mkdir -p /Developer/SDKs/iPhone.sdk/Library
mkdir -p /Developer/SDKs/iPhone.sdk/usr
cp /Developer/SDKs/MacOSX10.4u.sdk/SDKSettings.plist /Developer/SDKs/iPhone.sdk/
Másik SDK könyvtárakban a System/Library/Frameworks könyvtárában a framework-ök érdekes struktúrája van, de erre nekünk nincs szükségünk. A telefon framework-jeit a következőképpen linkeltem. mkdir -p /Developer/SDKs/iPhone.sdk/Developer
mkdir -p /Developer/SDKs/iPhone.sdk/Library
mkdir -p /Developer/SDKs/iPhone.sdk/usr
cp /Developer/SDKs/MacOSX10.4u.sdk/SDKSettings.plist /Developer/SDKs/iPhone.sdk/
ln -fs /usr/local/arm-apple-darwin/include/BluetoothManager/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/BluetoothManager.framework
ln -fs /usr/local/arm-apple-darwin/include/Celestial/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Celestial.framework
ln -fs /usr/local/arm-apple-darwin/include/CoreFoundation/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/CoreFoundation.framework
ln -fs /usr/local/arm-apple-darwin/include/Foundation/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Foundation.framework
ln -fs /usr/local/arm-apple-darwin/include/LayerKit/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/LayerKit.framework
ln -fs /usr/local/arm-apple-darwin/include/Message/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Message.framework
ln -fs /usr/local/arm-apple-darwin/include/TelephonyUI/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/TelephonyUI.framework
ln -fs /usr/local/arm-apple-darwin/include/UIKit/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/UIKit.framework
Itt még azt szeretném megjegyezni, hogy ezek a framework-ök csak azok, amiket az SVN-ből letöltött változat tartlmaz. Ennél többet találtam Erica Sadun chaintool-jában, de ezeket később varázsolom a helyükre. Egyenlőre még nem tanulmányoztam, de elképzelésem szerint csupán annyiból fog állni a művelet, hogy a megfelelő könyvtárakat header-ekkel együtt a /usr/local/arm-apple-darwin/include könyvtárba fogom másolni és ugyanilyen módon linkeket fogok létrehozni. Most legyen elég az, ami rendelkezésünkre áll./Developer/SDKs/iPhone.sdk/System/Library/Frameworks/BluetoothManager.framework
ln -fs /usr/local/arm-apple-darwin/include/Celestial/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Celestial.framework
ln -fs /usr/local/arm-apple-darwin/include/CoreFoundation/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/CoreFoundation.framework
ln -fs /usr/local/arm-apple-darwin/include/Foundation/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Foundation.framework
ln -fs /usr/local/arm-apple-darwin/include/LayerKit/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/LayerKit.framework
ln -fs /usr/local/arm-apple-darwin/include/Message/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/Message.framework
ln -fs /usr/local/arm-apple-darwin/include/TelephonyUI/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/TelephonyUI.framework
ln -fs /usr/local/arm-apple-darwin/include/UIKit/ \
/Developer/SDKs/iPhone.sdk/System/Library/Frameworks/UIKit.framework
Elkészítettem egy sablon projektet, amit innen lehet letölteni. Kicsomagolás után a /Developer/Library/Xcode/Project Templates/Application könyvtárban kell elhelyezni.
Itt szeretném még megjegyezni, hogy némely header file-ban hibákat fedeztem fel. Például a BluetoothManager framework-ben a file-ok importjában a következő szerepel.
#import "NSObject.h"
Mivel tudjuk, hogy ha macskakörmökkel írjuk az #import után a file nevét, akkor a file-hoz képest relatíven értelmezi a helyét. Ha kisebb-nagyobb jelekkel, akkor az include könyvtárakhoz képest relatíven kerül értelmezésre. A magam részéről a következőképpen javítottam. #import <Foundation/Foundation.h>
Ilyen és ehhez hasonló hibákra még számítani lehet és célszerű javítani őket (sudo vi).Ha mindent jól csináltunk, akkor a build zökkenésmentesen működik. Ha mégis probléma adódna, akkor a Build/Build Results menüpont alatt láthatjuk az üzeneteket.