Respuestas:
CPPFLAGSse supone que es para banderas para el procesador C P re P ; CXXFLAGSes para banderas para el compilador de C ++.
Las reglas predeterminadas en make (en mi máquina, en cualquier caso) pasan CPPFLAGSa casi todo, CFLAGSsolo se pasan al compilar y vincular C, y CXXFLAGSsolo al compilar y vincular C ++.
xestá +activado porque C++FLAGSexplotaría el compilador. ... Puede que haya llegado tarde a la fiesta, pero eso es aún mejor que llegar a tiempo a la fiesta equivocada.
CPPFLAGSNO es para C P lus P lus pero CXXFLAGS es.
Por defecto, CPPFLAGSse le dará al preprocesador de C, mientras que CXXFLAGSse le dará al compilador de C ++.
El Manual de creación de GNU es un buen recurso para preguntas como esta (ver Variables implícitas ).
Por defecto, están configurados para algo.
En la práctica, necesita saber qué hace cada proyecto. Prácticamente nadie usa esos valores predeterminados integrados en make, y si confía en, por ejemplo, CPPFLAGS que significa "banderas para el preprocesador C", encontrará que el proyecto que le interesa lo ha usado para significar "banderas para el compilador de C ++" en lugar. ¿Y se pasa el indicador CFLAGS a las líneas de compilación de C ++? Algunas veces. No siempre. Etc, etc., etc.
make -p