Quantcast
Channel: 應用教學 – Hiraku Dev
Viewing all articles
Browse latest Browse all 94

使用 SublimeClang 搭配 iOS tweak 的方法

$
0
0

因為個人用 Sublime Text 3 來寫 tweaks,

但是跟一般用 Xcode 寫 App 比起來,除了沒有自動補完之外,

也沒有在編譯前糾錯的功能。

 

不過 Sublime Text 的優點就是有很多外掛可以使用,

昨天弄了一整天,終於搞定了。

 

先來說我的開發環境:

系統跟編譯器還有 SDK 部分是 OS X 10.9 + Xcode 5 + iOS 7.0 SDK

Sublime Text 這邊是 3.0 ,搭配 theos logos 來寫 tweak。

 

首先,先在 Sublime Text 3 選擇 Preferences > Browse Packages …

然後在終端機 cd 到該目錄,輸入

git clone --recursive https://github.com/quarnster/SublimeClang SublimeClang
git pull && git submodule foreach --recursive git pull origin master

然後編譯 SublimeClang,或者在這邊下載我編譯好的檔案

解開壓縮之後把兩個 dylib 丟進去剛剛的 SublimeClang/internals 裡面

 

之後到 Sublime Text 3 的 Preferences >  Package Settings > SublimeClang > Settings – Default

找到 options : 加入下面這段

//For logos
"-x",
"objective-c++",
"-c",
"-DTARGET_IPHONE=1",
"-O2",
"-include", "/opt/theos/Prefix.pch",
"-I", "/opt/theos/include/",
//For iOS
"-isystem", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/",
"-isystem", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/include/c++/4.2.1/",
"-I", "/Applications/Xcode.app/Contents/Developer/usr/lib/llvm-gcc/4.2.1/include",
"-arch","armv7",
"-isysroot", "/Applications/XCode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk",
"-D__IPHONE_OS_VERSION_MIN_REQUIRED=__IPHONE_4_3",
"-miphoneos-version-min=4.3",

 

再找到 analyzer_commandline,加入下面這段

//Theos Logos
"/usr/bin/xcrun",
"-sdk", "iphoneos",
"clang++",

最後再找到 analyzer_extensions ,加上

"x",
"xi",
"xm",
"xmi"

就好了

 

不過這時候 theos logos 會被認為是錯誤,但自動補完的部分是正常的,

這時候你可以選擇發揮無視技能,或者按照接下來的教學做

 

 

去 SublimeClang/sublimeclang.py

找到 295 – 299 行,應該長這樣:

errString = "%s%s\n" % (errString, err)
if diag.severity == cindex.Diagnostic.Warning:
   warningCount += 1
elif diag.severity >= cindex.Diagnostic.Error:
   errorCount += 1

改成這樣

if not err.endswith("expected unqualified-id") and not err.endswith("missing context for method declaration"):
   errString = "%s%s\n" % (errString, err)
   if diag.severity == cindex.Diagnostic.Warning:
        warningCount += 1
   elif diag.severity >= cindex.Diagnostic.Error:
        errorCount += 1

 

再找到下面一點點的

add_error_mark(
     diag.severityName, filename, f.line - 1, diag.spelling)

 

改成這樣:

if not err.endswith("expected unqualified-id") and not err.endswith("missing context for method declaration"):
      add_error_mark(
           diag.severityName, filename, f.line - 1, diag.spelling)

 

就好了,重要的是主要注意原本的 code 那邊 tab 要空好就行了

 

 
參考資料:

在 Sublime Text 3 中使用 SublimeClang 插件

SublimeText 2をiOS向けにカスタマイズ:コード補完,構文エラー表示

SublimeClang user preferences json for iOS + theos


Viewing all articles
Browse latest Browse all 94

Trending Articles