2008-11-08 20 views
7

Tengo una gran base de código C++ existente. Normalmente, los usuarios de la base de código editan la fuente con gvim, pero nos gustaría comenzar a usar las ingeniosas funciones de IDE en Eclipse. La base de código tiene una extensa jerarquía de directorios, pero el uso de los archivos fuente incluye directivas sin rutas debido a algún vudú que utilizamos en nuestro proceso de compilación. Cuando vinculo el origen a mi proyecto en Eclipse, el indexador se queja de que no puede encontrar ningún archivo de encabezado (porque no especificamos las rutas en nuestras inclusiones). Si agrego manualmente los directorios del área de trabajo a la ruta de inclusión, entonces todo funciona maravillosamente, pero obviamente no es posible agregar cientos de directorios manualmente. ¿Habría un método simple para decirle a Eclipse que busque en algún lugar del proyecto los archivos de inclusión sin tener que agregarlos uno por uno? Si no es así, ¿alguien puede sugerir un buen punto de partida, como qué clases extender, escribir un complemento para escanear el proyecto en la creación/modificación y agregar programáticamente todos los directorios a la ruta include?Buscar todo el proyecto para incluye en Eclipse CDT

Respuesta

2

Esta característica ya se ha aplicado en la corriente actual de desarrollo CDT y estará disponible en CDT 6.0, que será lanzado junto con Eclipse 3.5 en junio de 2009.

Básicamente, si usted tiene una #include y la cabecera existe un archivo en algún lugar de su proyecto, entonces CDT podrá encontrarlo sin la necesidad de configurar manualmente las rutas incluidas.

Si necesita la característica ahora, puede descargar e instalar la última versión de desarrollo de CDT.

Eclipse Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=21356
Último CDT 6.0 compilaciones: http://download.eclipse.org/tools/cdt/builds/6.0.0/index.html

5

La forma en que maneja CDT construir caminos es por mirar el archivo XML .cdtbuild en la base de su directorio de proyectos (que podría ser un nombre diferente en las ventanas ... no estoy seguro)

En esto debe vea algo como

<option id="gnu.c.compiler.option.include.paths....> 
<listoptionValue builtIn="false" value="&quot;${workspace_loc:/some/path}$quot;" /> 
<listOptionValue ... /> 

... 
</option> 

aquí es donde se colocan todas las rutas de compilación que configure en la interfaz gráfica de usuario. Debería ser bastante fácil agregar todos los directorios a esto usando un simple script perl para recorrer el proyecto y generar todas las entradas de listOptionValue.

Esto obviamente no es el método ideal. Pero soy curioso, de qué sistema de compilación estás migrando, si está basado en make, deberías ser capaz de obtener eclipse para usar tus archivos make.

0

Dependiendo de la cantidad de vudú que esté haciendo en su proceso de compilación, es posible que Eclipse no pueda analizar correctamente sus archivos fuente, especialmente si tiene encabezados con nombres similares para diferentes archivos fuente. Si realmente quieres sacar el máximo partido de Eclipse, necesitarás asegurarte de que con la configuración que tengas no confundas al analizador. Personalmente, recomendaría tener un diseño simple y un proceso de construcción.

En cuanto a la pregunta en cuestión, agregar los directorios uno por uno es casi la mejor opción.

1

De la lectura de la this Eclipse CDT FAQ entry, suena como Eclipse puede generar automáticamente una lista de directorios de inclusión si se inicia su construcción desde dentro de Eclipse y si su acumulación salidas de los gcc/g++ comandos antes de iniciar realmente gcc/g++. Puede cambiar la forma en que Eclipse inicia una compilación yendo a Propiedades del proyecto, luego seleccionando la categoría Compilación C/C++ y buscando la opción Compilar comando en el lado derecho del cuadro de diálogo.

+0

Acabo de probar esto, funciona de la manera más incómoda. Está analizando el registro de compilación y agrega rutas incluidas desde líneas g ++ -I/some/path a "system includes". Usando el archivo .cproject y agregándolos usted mismo, permita tener versiones en VC. Auto-Discovery no. – Evgeny

Cuestiones relacionadas