[英]Xcode 4.2 Code Coverage
我開始使用Xcode 4.2,我在生成代碼覆蓋方面遇到了問題。
Xcode 4.2不包含GCC 4.2編譯器,但它已被LLVM GCC 4.2編譯器取代。 第一個需要在以前版本的Xcode中生成代碼覆蓋。
我按照CoverStory 網站上的“教程”進行了操作,但結果如下:
a)當我執行所有步驟時,沒有覆蓋文件。
b)當我將libprofile_rt.dylib鏈接到我的項目時,應該失敗的測試,不再失敗。
有人遇到過這個問題嗎? 你是怎么解決的?
謝謝
這個博客提供了一個很好的教程,介紹如何使用LLVM實現與gcc兼容的覆蓋結果。
覆蓋功能在當前的LLVM前端中可用,但似乎沒有暴露
在XCode附帶的當前版本中。
我同意作者的說法,它可以是一個解決方案來編譯自己的版本用於覆蓋目的,並堅持最終二進制生成的發貨版本。
我還值得注意他的教程聲稱:
Since Clang outputs these files in the same format as GCC,
they are compatible with tools such as CoverStory.
也許這對你有用。
這是一種在xcode 4.2中使用gcc 4.2進行編譯的方法。 這主要通過命令行完成,因此當您看到以[ 15:30 jon@MacBookPro / ]$
開頭的行時,您需要打開Terminal.app並運行在$
后面開始的命令。
在此過程中不會刪除或刪除任何文件或目錄,因此如果您將來需要使用LLVM進行編譯,則很容易撤消。
下載-但是不要安裝尚未 - xcode_4.1_for_lion.dmg或xcode_4.1_for_snow_leopard.dmg
現在,按照以下步驟將Xcode 4.1安裝到/Developer-4.1
:
備份working /Developer
目錄(安裝Xcode 4.2的地方)
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.2
使用默認安裝位置( /Developer
)運行Xcode 4.1安裝程序
將新的Xcode 4.1安裝移至/Developer-4.1
:
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer /Developer-4.1
將Xcode 4.2開發人員目錄移回/Developer
:
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer-4.2 /Developer
編輯Xcode 4.2 GCC 4.2.xcspec
文件,使gcc 4.2顯示在編譯器選項列表中[1] :
[ 15:30 jon@MacBookPro / ]$ sudo vi "/Developer/Library/Xcode/PrivatePlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/GCC 4.2 (Plausible Blocks).xcplugin/Contents/Resources/GCC 4.2.xcspec"
從這里改變第41和42行:
ShowInCompilerSelectionPopup = NO; IsNoLongerSupported = YES;
對此:
ShowInCompilerSelectionPopup = YES; IsNoLongerSupported = NO;
備份Xcode 4.2 iOS / Simulator Framework usr
目錄:
[ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr.backup [ 15:30 jon@MacBookPro / ]$ sudo mv -v /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr.backup
將Xcode 4.1 iOS / Simulator Framework usr
目錄復制到Xcode 4.2:
[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/usr /Developer/Platforms/iPhoneOS.platform/Developer/usr [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/usr /Developer/Platforms/iPhoneSimulator.platform/Developer/usr
將gcc
和info
iOS SDK庫目錄從Xcode 4.1復制到Xcode 4.2 [2] :
[ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/gcc /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/gcc [ 15:30 jon@MacBookPro / ]$ sudo cp -rv /Developer-4.1/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/info /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/info
使用gcc-4.2編譯!
這是一篇博文,我寫了一些關於這個過程的更多信息。 如果您遇到任何問題或有任何問題,請隨時在博客上發表評論。
[1]如果從命令行打開(使用類似vi
, emacs
, nano
等的東西),請確保將路徑括在引號“/ long path / with spaces / in / file.xcspec”中,或者轉義空格/ some / long \\ path / with \\ spaces / in \\ it / file.xcspec
[2]這是必要的,因為iPhoneOS.platform SDK有自己的單獨的/usr/lib
目錄,但iPhoneSimulator.platform SDK沒有
Xcode 4.2的默認編譯器是LLVM 3.0。 Apple正在從LLVM轉移到GCC 4.2,它仍然可以選擇。 然而,GCC 4.2已經不復存在了。
我想除了找到一個與LLVM 3.0(最好)或LLVM GCC 4.2一起使用的不同代碼覆蓋解決方案之外別無選擇,或者等到有人提供這樣的工具。 畢竟,Xcode 4.2相對較新,代碼覆蓋相對重要,所以我相信最終會有一個有效的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.