Ecco le informazioni dal sito Gimpel, credo che copre le opzioni che stai cercando (grassetto aggiunto per enfasi):
Lint utilizza l'etichetta di intestazione "library" per designare queste intestazioni su cui un programmatore non ha controllo (come le intestazioni del compilatore). Per impostazione predefinita, tutto il #include da una directory esterna o racchiuso tra <> è considerato "libreria". Questo può essere modificato mediante l'uso dell'opzione + libclass e ulteriormente ottimizzato con le opzioni +/- libdir e +/- libh. È quindi possibile utilizzare le opzioni -wlib, -elib e -elibsym per controllare solo quei messaggi che vengono emessi dalle intestazioni delle librerie. I file di opzioni del compilatore distribuiti con PC-lint di solito contengono un'opzione -wlib (1) che limita l'output di filamenti dalle intestazioni delle librerie agli errori solo (sopprimendo messaggi di avviso e informativi).
È possibile trovare ulteriori informazioni sul sito Gimpel here.
Inoltre, se non ricordo male, -wlib (0) sopprime tutti gli errori e gli avvisi di libreria ... al contrario di -wlib (1) menzionato sopra. Dovrò ricontrollare quando torno al lavoro. Non ho una copia del manuale con me.
--- EDIT ---
Se si tratta di un'opzione, porrei tutti i file associati con la libreria in una directory diversa. In Keil, puoi andare su "Strumenti-> Imposta PC-Lint". Quindi aggiungere la nuova directory all'elenco di "PC-Lint Include Folders". L'opzione -wlib (0) dovrebbe quindi trattare quelle intestazioni come "estranee" e non restituire errori. Ovviamente, dovresti modificare le impostazioni del progetto per compilare anche i file della libreria.
--- EDIT2 Aggiunto Esempio ---
Va bene, ecco un po 'di test ho cercato di garantire che il mio suggerimento sarebbe lavorare. Ho creato un progetto in una directory che ho chiamato "ex_lib" e ho chiamato il progetto lib_test. In "Gruppo Sorgente 1" Ho creato e aggiunto il file "main.c":
main.c
#include <lib_test.h>
int main (void)
{
uint16_t x = 5;
uint16_t y = 10;
uint16_t total1 = 0;
uint16_t total2 = 0;
uint16_t total3 = 0;
uint16_t total4 = 0;
total1 = add(x,y);
total2 = sub(x,y);
total3 = mult(x,y);
total4 = div(x,y);
return 0;
}
Poi ho creato una sotto-directory chiamata "library" e ha creato un secondo progetto chiamato libreria in quella directory. Il progetto della libreria consisteva dei seguenti file "lib_test.h" e "lib_test.c".
lib_test.h
#ifndef LIB_TEST__
#define LIB_TEST__
#include <stdint.h>
extern uint16_t add(uint16_t x, uint16_t y);
extern uint16_t sub(uint16_t x, uint16_t y);
extern uint16_t mult(uint16_t x, uint16_t y);
extern uint16_t div(uint16_t x, uint16_t y);
#endif /* LIB_TEST__ */
lib_test.c
#include "lib_test.h"
uint16_t add(uint16_t x, uint16_t y)
{
return (x + y);
}
uint16_t sub(uint16_t x, uint16_t y)
{
return (x - y);
}
uint16_t mult(uint16_t x, uint16_t y)
{
return (x * y);
}
uint16_t div(uint16_t x, uint16_t y)
{
return (x/y);
}
Nel progetto biblioteca, alla voce "Opzioni per 'Obiettivo 1' Target", ho selezionato "Crea Biblioteca". Ho quindi compilato il progetto della libreria.
Dopo aver completato correttamente la compilazione, sono tornato al progetto lib_test e fatto clic con il pulsante destro del mouse su "Target1" e selezionato "Aggiungi gruppo". Ho creato un gruppo chiamato "Libreria" e aggiunto il "library.lib" precedentemente compilato dalla directory "library" al gruppo "Library".
Infine, sotto le opzioni per Target 1 (nel progetto lib_test), sono passato alla scheda "C/C++" e aggiunto "libreria" a "Includi percorsi". Sono stato quindi in grado di compilare correttamente (con alcuni avvisi sulle variabili impostate ma mai utilizzate) il progetto lib_test. Sotto "Strumenti-> Set-up PC-Lint" Ho aggiunto il seguente:
PC-Lint Includere cartelle: C: \ Keil_ARM \ RV31 \ INC \ e biblioteca \
Lint eseguibile: C: \ Lint \ LINT-NT.EXE
file di configurazione: C: \ Lint \ LNT \ CO-RV.LNT
ho modificato il file CO-RV.LNT per verificare i miei risultati Lint modificando -wlib(). Quando ho eseguito Lint con -wlib (0) non ho ricevuto avvisi o errori sui miei file di libreria. Poi ho cambiato -wlib (2) e ho ricevuto numerosi avvertimenti su stdint.h.
Questa è sicuramente una semplificazione eccessiva ma dovrebbe darti un buon punto di partenza. Inoltre, ho ricevuto avvisi di Lint sulle mie variabili non accessibili in "main.c", ma mi aspettavo che.
Quindi stai cercando un modo per ignorare completamente un qualsiasi set di file sorgente? (La tua libreria non è un file oggetto precompilato, stai compilando dal sorgente?) Se salti completamente i file, potresti finire con errori di tipo "funzione non definita" durante il wrap-up globale ... – Ross
Esattamente. Questo è il motivo per cui non escludo solo i file dal comando LINT. È possibile includerli a questo scopo, ma anche indicare che i loro errori dovrebbero essere omessi? – Mark