WARNISERROR e l’errore “warning treated as error – no ‘object’ file generated”

Sviluppando su Windows CE ed utilizzando il Platform Builder, può capitare di incorrere nel seguente errore :

error C2220: warning treated as error – no ‘object’ file generated

Ciò vuol dire che il compilatore è stato impostato per trattare i warning come errori e quindi la compilazione non viene completata correttamente ed il file oggetto non viene generato.

Analizzando le opzioni di compilazione al sequente link si evince che è disponibile l’opzione /W per definire il warning level del compilatore stesso. Nel caso in cui venga settato /WX, quest’ultimo tratterà ogni warning come errore.

Per poter modificare questo comportamento in corrispondenza di un singolo modulo (librearia o eseguibile), è necessario settare all’interno del file sources di quest’ultimo, la seguente linea…

WARNISERROR = 0

…oppure ometterla, considerando che questo è il comportamento di default.

Talvolta, alcune BSP settano tale impostazione a livello globale per tutti i moduli impostandola nel file source.cmn che troviamo al percorso $(_WINCEROOT)\PLATFORM\<BSP>.

Attraverso questa impostazione, l’ambiente di build setterà o meno il warning level del compilatore con l’opzione /WX.

Considerando, infatti, un estratto del makefile.def …

!IF “$(WARNISERROR)”==”1”
# Turn off WX when running prefast, it throws some warnings.
!  IF “$(PREFAST_ADD_PATH)” == “”
CFLAGS=$(CFLAGS) -WX
!  ENDIF
!ENDIF

…si evince che, abilitanto WARNISERROR, tra le flags del compilatore (CFLAGS) viene impostata anche WX.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s