我在this tutorial 的幫助下創建了我的自定義clang
插件,我想在我的Xcode iOS項目中自動運行它。如何爲Xcode項目指定其他clang選項?
我需要以下附加命令上clang
運行,
-Xclang -load \
-Xclang ~/static_analysis/llvm/Debug+Asserts/lib/libPluginExample.so \
-Xclang -plugin -Xclang -example-plugin \
我想節省Xcode中產生的其他所有的命令,因爲它是難以創造和傳遞這些命令對每個Xcode項目。這就是爲什麼我選擇使用clang
插件而不是clang
工具的原因。
我該怎麼做到這一點?
或者我怎樣才能提取由xcode生成的編譯器標誌,在叮噹聲工具中使用它們? (becouse,正確使用工具,我需要指定所有include目錄和所有來源,所有的框架)
更新:在項目
Settings -> Build Phases -> Compile Sources (double click on source)
我加入了古都的命令, 但在編譯時出現錯誤(插件是來自叮聲源的標準示例libPrintFunctionNames.dylib):
error: unable to load plugin '/Users/...llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib': 'dlopen(/Users/.../llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib, 9): Symbol not found: __ZN5clang11ASTConsumer21HandleInterestingDeclENS_12DeclGroupRefE Referenced from: /Users/.../llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib Expected in: flat namespace in /Users/.../llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib' Command /Applications/Xcode 2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1
我試圖用libPrintFunctionNames.a
而不是libPrintFunctionNames.dylib
,但它沒有幫助。
也許原因是我建立了我的插件在分開的llvm和clang源文件上,而在xcode中我使用了其他版本的clang。我會檢查。
我遇到了同樣的問題,但設法通過小的Xcode黑客解決。 http://railsware.com/blog/2014/02/28/creation-and-using-clang-plugin-with-xcode/ 下面是關於如何使它與Xcode一起工作的更詳細的解釋。 – AlexDenisov
好點,@AlexDenisov。另一種強制Xcode使用自定義編譯器的方法是通過xcodebuild。這個命令看起來像xcodebuild [..some arguments ..] CC =/path/to/custom/clang CXX =/path/to/custom/clang –