㈠ xcode 怎麼把虛擬文件夾轉成實際路徑
默認情況下。是有生成,可能你不知道在哪裡。
Xcode-->perferences--> locations
Derived Data,下面有一個路徑:
/Users/Liam/Library/Developer/Xcode/DerivedData
這個就是默認的生成路徑。點擊旁邊的箭頭就可跳轉到該文件夾。這里不值程序的目標文件,還有其他的生成的文件。
如果你想在項目中也生成一份,那麼就點擊Advanced按鈕。將Build Location,選擇「locations specified by targets」就可以了。
這時你在Build,那麼項目路徑下就會產生Build目錄。
targets -> build phases -> link binary with Libraries
Build Settings裡面設定Library Search Paths為那個靜態庫的存儲路徑,不然不會讀取。
object-c調用C++編寫的靜態庫時,首先要在build setting中C++ Standard Library 選項中選擇libstdc++,其次就是調用C++介面的.m文件要改為.mm(就是 修改文件名後綴為.mm)。
很多情況下,我們從網上得到的是一個純C的代碼包,他們這些庫,往往是各種平台通用,代碼包svn checkout出來後,裡面有makefile , vcproject file,等等。
往往我們先README看過之後,通過./configure make make install ,
來實現編譯生成了一個庫。(注意一些基本語法 ./confiure後如果帶 --prefix=/path/to/your/custom/dir 表明自定義安裝路徑 ,這個很有用,有些人默認安裝後,找不到*.a庫的路徑,急死了。嘿嘿。)
那麼在這樣的情況下,我們第一個首先會遇到的問題,就是這個庫格式不兼容。
我們添加了這個庫到project後編譯時,顯示this file format doesn't support (i386)。
這個情況,是由於大部分snow leopard是INTEL DUO CPU,雙核x86_64的,一般很多庫,不加特別標注,都以為你開發了為MAC電腦開發程序,所以庫都默認為x86_64位的靜態庫。如果你好奇,可以new一個MAC開發程序的project,試著看看那個庫能不能正常編譯,沒有warning就知道了。
當然,還有一個命令行來檢測你編譯的庫,可以使用在什麼平台架構下。
方法如下: : lipo -info /path/to/your/library.a
即可看到此庫位i386, x86_64, arm等等。
明白了上面的問題的產生原因,我們就好辦了。 一般解決辦法是這樣的,在./configure 之後加一點參數,比如 CFLAG="-arch i386" 。GCC的path設定到SDK path以下的/usr/lib/gcc/i686 or arm下。注意,SDK PATH,有兩種,iphoneOs 和iphoneSimulator.有很大的區別!!
好了。以上是第一個問題。隨後,你編譯成功,lipo檢測版本也OK後,你可以*.a 靜態庫文件到Project了。記得選中復制到項目。
再一個問題,也就是第二大問題,就是如何導入頭文件。
由於很多是C的代碼,headers通常是這樣使用的 #include <fuck.h> 。如果我們這樣使用,xcode直接報錯,提示找不到這樣的頭文件。
那我們該怎麼辦呢?我找了網上所有的文章,都一帶而過。於是我很愚蠢的選擇把頭文件拷貝過來。然後一個個的改include 為import ,把< >語法,改為」 「。並且,木有一個高手願意說!我恨啊!!!
其實可以使用這樣的辦法,就是在右擊你的project 名,選擇Get Info . 在build選項卡中,有search hearder path 選項。是讓你告訴xcode去哪兒搜搜頭文件。
記住,這里如果你的庫的安裝路徑是/usr/AAA的話,那AAA下肯定有include , lib兩大文件夾。 那你在選項中,請直接填/usr/AAA,不需要多此一舉選擇到include文件夾中,蘋果會自動替你搜索進去。
這里有一個小細節,如果這樣編譯出錯的話,請不要選中recursive ,否則可能導致頭文件重復引用,導致error: expected '=', ',', ';', 'asm' or '__attribute__' before 這樣的錯誤。
㈡ xcode 7 的舊sdk在哪個路徑
首先得有老版本的sdk,如果你已經安裝了Xcode5.0,那麼老版本的sdk iPhoneOS6.1.sdk已經被刪除了,你可以從同事電腦里拷貝一份,路徑是:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs,我從同事電腦考了一份,汗,又編譯出錯,找不到頭文件,只好重寫下載Xcode4.6.3,打開dmg鏡像文件,從路徑/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer拷貝iPhoneOS6.1.sdk到路徑/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs目錄即可 附iPhoneOS6.1.sdk下載鏈接:iPhoneOS6.1.sdk 提示 對於還沒有安裝Xcode5.0的童鞋,在安裝之前最好備份一下iPhoneOS6.1.sdk目錄,在安裝Xcode5.0之後拷貝到相關目錄/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs即可以使用sdk6.1了,在項目中設置
㈢ 如何在高版本的Xcode中部署低版本的ios程序
方法如下:
打開老的Xcode安裝路徑(你可以去 Apple Dev Center 下載老版本的Xcode dmg包,解壓出來對應的SDK包。):Applications/Xcode.app/Contents/Developer/Platforms /iPhoneOS.platform/Developer/SDKs .這個路徑中安裝了你當前Xcode的所有Base SDK(例如 「iPhoneOS6.1.sdk」),同樣的你只需將這個sdk 備份一份拷貝到新的xcode相同目錄下即可。
安裝完新版Xcode 5後同樣將備份的sdk拷到對應路徑: Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs下即可。
重啟你的Xcode,打開Project Targets -> Build Settings -> Base SDK,設置為對應的sdk即可(例如ios6)
這時候你可能會發現運行起來的模擬器還是ios7的,要想模擬器是ios6的,同樣的只需要到路徑/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs下將對應的simulator備份的新得xcode路徑下即可。