Recentemente ho cercato di configurare un flusso di lavoro iOS basato su Vim.clang_complete: Vim completamento automatico per iOS
ho trovato clang_complete, e hanno fissato le opzioni utente clang nel mio Vimrc in questo modo
let g:clang_user_options='-fblocks -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -D__IPHONE_OS_VERSION_MIN_REQUIRED=40300'
come descritto qui: http://www.zenskg.net/wordpress/?p=199#comment-229
e aggiunto qualche quadro/intestazione/percorsi lib. Non pubblicherò l'intera riga perché è enorme.
Così ho provato la compilazione di uno dei file nel mio progetto utilizzando clang
dalla riga di comando (utilizzando le stesse opzioni), e si compila bene, ma solo se uso la bandiera -arch armv6/7
. Se non lo faccio tenta di compilare per i386 e si lamenta di file di intestazione mancanti.
Fin qui tutto bene. Ora uso solo le stesse identiche opzioni che ho dato a clang
, alle opzioni utente di clang_complete
nel mio .vimrc
giusto?
No. Quando faccio questo e cerco di completamento automatico una parola in Vim, si dice
unknown argument: '-arch'
nella lista QuickFix di Vim. Ho bisogno di questa bandiera, come devo procedere?
Qualsiasi idea utile. Mi piacerebbe ottenere il completamento del codice iOS lavorando sotto Vim.
Grazie mille ... Questo mi ha dato molto di più. Ho eseguito xcodebuild con in modalità dettagliata, copiato le opzioni clang, poi ho eseguito clang con queste opzioni in modalità dettagliata, quindi ho copiato le opzioni clang -cc1 dall'output nel mio .vimrc. clang_complete non può ancora completare automaticamente il mio codice, penso di aver bisogno di usare il flag -frameworks che non sembra avere un equivalente in -cc1. Potresti indicarmi qualche documentazione? Le pagine man non sono molto buone - non avrei mai saputo dell'opzione -cc1 senza che tu me lo dica. – Sam
Ecco qualcosa che potresti provare: apri ~/.vim/plugin/clang_complete.vim (o ovunque tu abbia installato clang_complete), e cerca la funzione ClangCompleteBinary. Ci sono due cose da provare: 1. Commentare v: shell_error condition block. Clang restituirà spesso buone opzioni di completamento anche quando ha un errore di compilazione e clang_complete ignora questo fatto. 2. cambia sistema (l: comando) in system (l: comando. '| & Tee /tmp/clang.log') e avvia un completamento da vim. Quindi sarai in grado di vedere in /tmp/clang.log l'esatto errore generato da clang. Spero che questo aiuti. –