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.