Pregunta Al pasar C / C ++ # define a makefile


Desarrollo C / C ++ usando el Eclipse IDE. Eclipse también genera un archivo MAKE que no quiero editar, ya que simplemente se sobrescribirá.

Quiero usar ese archivo MAKE para la construcción nocturna dentro de Hudson.

¿Cómo paso #defines que se hacen en el archivo de proyecto del IDE al archivo MAKE? (¿Y por qué Eclipse ya no los incluye en el archivo MAKE generado?)

De hecho, tuve esto resuelto una vez, y luego accidentalmente lo sobreescribí :-( Pero al menos sé que se puede hacer ...


32
2018-01-11 02:44


origen


Respuestas:


Si está ejecutando make desde la línea de comando, use

make CPPFLAGS=-DFOO

que agregará -DFOO a todas las compilaciones. Vea también CFLAGS, CXXFLAGS, LDFLAGS en el manual de fabricación.


30
2018-01-20 23:42



Podría escribir un pequeño programa para incluir los encabezados y escribir un fragmento de archivo MAKE que include en el archivo make principal (requiere la fabricación de GNU).

Esta es una solución bastante fea que requiere una gran cantidad de hackers manuales. Más elegante sería analizar gramaticalmente el archivo de proyecto y escriba el fragmento de archivo MAKE.


2
2018-01-11 03:00



Para uso de GCC -D define.

OP comentó a continuación que quiere pasar el definir en make y hacer que se lo pase a GCC.

Make no permite esto. Normalmente, solo agrega otra regla de marca para agregar define. Por ejemplo, 'make release' versus 'make debug'. Como creador del archivo MAKE usted hace las dos reglas y tiene las definiciones en el archivo make. Ahora bien, si Eclipse no está poniendo las definiciones en el archivo MAKE para usted, diría que Eclipse está roto.


1
2018-01-11 02:49



Si está utilizando autotools, otra opción es tener 2 directorios 'bin / debug' y 'bin / release'.

# Simple bootstrap script.

# Remove previously generated filed and call autoreconf.
# At the end configure 2 separate builds.
echo "Setting up Debug configuration: bin/debug"
../../configure CXXFLAGS="-g3 -O0 -DDEBUG=1"
echo "Setting up Release configuration: bin/release"
cd bin/release/
../../configure CXXFLAGS="-O2"

Configurar Eclipse. Abra las propiedades del proyecto (Proyecto-> Propiedades-> C / C ++ Build-> Configuración del constructor) y configure la Ubicación de compilación-> Directorio de compilación para

${workspace_loc:/helloworld/bin/debug}

Reemplazando 'helloworld' con el directorio de su proyecto relativo al espacio de trabajo (o puede proporcionar una ruta absoluta $ {/ abs / path / debug}). Haga lo mismo con Release config, reemplazando "/ debug" con "release" al final de la ruta.

Este método parece una pérdida de espacio en el disco, pero una alternativa válida para lograr construcciones completamente separadas.


1
2017-12-24 03:14