Build error parsing con Visual Studio e Makefile (gcc)
Sarà capitato anche a voi di voler utilizzare Microsoft Visual Studio come ambiente di sviluppo per compilare software utilizzando compilatori di terze parti, ad esempio toolchain di cross-compilazione basate su gcc e/o cygwin.
Per fare ciò è necessario creare un progetto Makefile dal menu di Visual Studio e indicare:
- Comandi da utilizzare per compilare, ricompilare e pulire la soluzione (solitamente richiami al makefile)
- Directory di inclusione per poter utilizzare l’intellisense
- Eventuali definizioni preprocessore
Una volta completato il progetto si può tranquillamente compilare direttamente da Visual Studio.
Un inconveniente che si verifica però consiste nel fatto che l’output generato da un differente compilatore può non essere nel formato che Visual Studio si aspetta. Quindi, in caso di errore di compilazione, nella finestra di Output vedete correttamente l’errore ma, cliccandoci sopra, non verrete automaticamente reindirizzati alla riga del sorgente che ha generato l’errore.
Per consentire il corretto parsing dell’output del compilatore occorre “riscriverlo” in formato che Visual Studio riconosca. Basta semplicemente utilizzare il comando sed appendendo in coda al comando di compilazione quanto segue:
2<&1 | sed -e ‘s|/cygdrive/\([a-z]\)/|\1:/|’ -e ‘s/\.\([ch]\):\([0-9]*\)/.\1 (\2)/’ ; exit ${PIPESTATUS[0]}
Vediamo un esempio: se il comando di compilazione è:
make all
Lo si dovrà modificare in:
make all 2<&1 | sed -e ‘s|/cygdrive/\([a-z]\)/|\1:/|’ -e ‘s/\.\([ch]\):\([0-9]*\)/.\1 (\2)/’ ; exit ${PIPESTATUS[0]}
In questo modo Visual Studio sarà in grado di portarvi direttamente alla riga del sorgente che ha generato un errore di compilazione.
Share this content: