CFLAGS vs CPPFLAGS

Entendo que CFLAGS (ou CXXFLAGS for C ++) são para o compilador, enquanto CPPFLAGS é usado pelo pré-processador.

Mas ainda não entendo a diferença.

Preciso especificar um caminho de inclusão para um arquivo de cabeçalho incluído no #include - porque #include é uma diretiva de pré-processador, o pré-processador (CPPFLAGS) é a única coisa com a qual me preocupo?

Em que circunstâncias eu preciso fornecer ao compilador um caminho de inclusão extra?

Em geral, se o pré-processador encontra e inclui os arquivos de cabeçalho necessários, por que ele precisa ser informado sobre os diretórios de inclusão extra? Para que serve o CFLAGS?

(No meu caso, descobri queAMBOS destes permitem-me compilar o meu programa, o que aumenta a confusão ... Posso usar CFLAGSOU CPPFLAGS para realizar meu objetivo (pelo menos no contexto de autoconf). O que da?)

questionAnswers(3)

yourAnswerToTheQuestion