Puede hacer que imprima sus variables predefinidas y la base de datos de reglas usando la invocaciónmake -p
Daniele Pallastrelli
Respuestas:
210
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 ++.
Parece una práctica común que CFLAGS también se pasaría al compilar C ++?
Baiyan Huang
21
Decir ah. ¡Lo entiendo! El 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.
Jacksonkr
@BaiyanHuang No lo pensaría como algo común o no; te encontrarás con ambas convenciones. Tienes que saber qué está haciendo tu configuración actual.
James Moore el
1
CPPFLAGSNO es para C P lus P lus pero CXXFLAGS es.
shizhen
Cierto pero terrible. Esto se siente como si estuviéramos atrapados en los años 80.
shuhalo
34
Por defecto, CPPFLAGSse le dará al preprocesador de C, mientras que CXXFLAGSse le dará al compilador de C ++.
Estaba mirando directamente el manual cuando tenía exactamente la misma pregunta. Escribí CPPFLAGS en stackoverflow y obtuve la respuesta mucho más rápido que buscando el manual.
Dan Hook
18
CPPFLAGS son para el preprocesador de C, mientras que CXXFLAGS son para el compilador de C ++.
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.
Algunos proyectos usan CPPFLAGS para significar "banderas de c ++", pero esos proyectos casi definitivamente lo hacen por ignorar el estándar, y sería mejor si usaran CXXFLAGS.
Score_Under
@Score_Under No estoy en desacuerdo con usted, pero el mundo está lleno de proyectos que no podrían importarle menos lo que cualquiera piense que es el estándar. Usted siempre tiene que investigar.
make -p
Respuestas:
CPPFLAGS
se supone que es para banderas para el procesador C P re P ;CXXFLAGS
es para banderas para el compilador de C ++.Las reglas predeterminadas en make (en mi máquina, en cualquier caso) pasan
CPPFLAGS
a casi todo,CFLAGS
solo se pasan al compilar y vincular C, yCXXFLAGS
solo al compilar y vincular C ++.fuente
x
está+
activado porqueC++FLAGS
explotarí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.CPPFLAGS
NO es para C P lus P lus peroCXXFLAGS
es.Por defecto,
CPPFLAGS
se le dará al preprocesador de C, mientras queCXXFLAGS
se 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 ).
fuente
CPPFLAGS son para el preprocesador de C, mientras que CXXFLAGS son para el compilador de C ++.
Ver aquí .
fuente
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.
fuente