¿Hay alguna manera de pedirle a gcc que trate#include<> como#include ""?
header c-preprocessor (2)
La opción -I- podría ayudarte. Desde la página man de gcc:
-I- Split the include path. Any directories specified with -I options
before -I- are searched only for headers requested with
"#include "file""; they are not searched for "#include <file>". If
additional directories are specified with -I options after the -I-,
those directories are searched for all #include directives.
¿Hay un indicador de compilador o preprocesador que obligue a gcc a tratar #include <xh>
como si fuera #include "xh"
? Tengo un montón de código generado que usa #include <>
para los archivos en el directorio actual, y gcc informa que no hay tal archivo o directorio para estos archivos. Estoy buscando una solución alternativa que no implique la edición del código.
EDITAR: -I.
no lo hace Digamos que tengo los siguientes archivos:
foo / foo.h:
#include <foo2.h>
foo / foo2.h:
#define FOO 12345
xyz / xyz.c
#include <stdio.h>
#include "foo/foo2.h"
int main(void)
{
printf("FOO is %d/n", FOO);
return 0;
}
Si, dentro del directorio xyz
, compilo con gcc -o xyz I.. xyz.c
, la compilación falla:
In file included from xyz.c:2:
../foo/foo.h:1:18: error: foo2.h: No such file or directory
xyz.c: In function ‘main’:
xyz.c:6: error: ‘FOO’ undeclared (first use in this function)
xyz.c:6: error: (Each undeclared identifier is reported only once
xyz.c:6: error: for each function it appears in.)
Añadiendo -I.
no cambia nada
Pero, si cambio foo / foo.h a:
#include "foo2.h"
Entonces la compilación funciona. Sé que podría agregar -I../foo
a mi línea de comandos, pero estaba buscando una forma más genérica para tratar #include <>
como #include ""
. ¿Existe uno?
Sí, puedes pasar el interruptor -I .
al compilador para agregar el directorio actual a la ruta de búsqueda de inclusión.