Build error parsing con Visual Studio e Makefile (gcc)

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
Makefile con Visual Studio
Maschera in cui inserire le proprietà del progetto Makefile su Visual Studio 2008

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: