2010-11-09 668 views
71

Nuevo en C++; Comprensión básica de inclusiones, bibliotecas y el proceso de compilación. Hizo algunos makefiles simples todavía.Cómo definir varias rutas include en Makefile

Mi proyecto actual implica el uso de una API api de informix y necesito incluir archivos de encabezado en más de un directorio no estándar. ¿Cómo escribir eso? Havent encontró algo en la red, probablemente porque no utilicé buenos términos de búsqueda

Esta es una forma de lo que probé (no funcionaba). Sólo para mostrar el makefile

LIB=-L/usr/informix/lib/c++ 
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public 

default: main 

main: test.cpp 
     gcc -Wall $(LIB) $(INC) -c test.cpp 
     #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp 

clean: 
     rm -r test.o make.out 

Respuesta

80

Hay que anteponer cada directorio con -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 
+0

Todavía no funciona para mí, aunque corriendo gcc hace manualmente. – NoBugs

2
INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 

gracias por escuchar ... justo después de publicar me encontré con la posibilidad que falta que no había probado todavía

63

Debe usar -I con cada directorio. Pero todavía se puede delimitar los directorios con espacios en blanco si se utiliza (GNU) de foreach marca:

INC=$(DIR1) $(DIR2) ... 
INC_PARAMS=$(foreach d, $(INC), -I$d) 
+6

+ Esto es lo que vine a buscar aquí. '$ (foreach ,,)' –

+11

O más corto: 'INC_PARAMS = $ (INC:% = - I%)' con [sustituciones] (https://www.gnu.org/software/make/manual/html_node/Substitution -Refs.html). '$ (foreach ,,)' es más legible, pero las sustituciones se usan tan comúnmente que es bueno familiarizarse con cómo funcionan de todos modos. – skalee