2010-02-20 13 views
16

Soy nuevo en XCode y la gestión de archivos me resulta muy difícil. En la mayoría de los IDE, puede simplemente hacer que la referencia del árbol de origen del proyecto sea una estructura de directorio en el disco. Esto hace que sea más fácil agregar nuevos archivos a su proyecto; simplemente los coloca en el disco y se compilan automáticamente.¿Cómo se mantienen sincronizados los archivos fuente del proyecto Xcode con los directorios del sistema de archivos?

Con XCode, parece que tengo que crear el archivo y agregarlo por separado al proyecto (u obligarme a manipular el sistema de archivos a través de la IU). Pero esto significa que compartir el .xcodeproj a través del control de fuente está plagado de problemas, a menudo, tendremos conflictos de combinación en el archivo xcodeproj, y cuando no lo hacemos, a menudo obtenemos errores de enlazador, porque durante la fusión algunos de los archivos que fueron enumerados en el proyecto son eliminados. Así que tengo que ir y volver a agregarlos al archivo del proyecto hasta que pueda compilarlo, y luego vuelva a verificar en el archivo del proyecto.

Estoy seguro de que me falta algo aquí. Intenté usar 'carpetas de referencia', pero parece que el código no está compilado. Parece una locura construir un IDE que obligue a todos a modificar un solo archivo compartido cada vez que agregue o elimine archivos en un proyecto.

+0

Esto probablemente no es lo que quieres escuchar, pero este es el estado de las cosas. Sin embargo, me sorprende que estés teniendo tantos conflictos de fusión con el archivo del proyecto. He estado usando Xcode (y Project Builder antes) durante mucho tiempo y, al menos en versiones recientes, no he tenido demasiados problemas con esto. Tengo algo de curiosidad, ¿qué sistema de control de versiones estás usando? –

Respuesta

2

Me intrigan los IDEs que está utilizando que compilan automáticamente todo en un directorio, ya que ningún IDE que haya usado lo hace (al menos para C++). Creo que es bastante estándar tener un archivo de proyecto que contenga una lista de todos los archivos. A menudo, es posible que desee incluir sólo determinados archivos para diferentes objetivos, tienen configuración del compilador para cada fichero, etc.

De todos modos, dado que así es como se hace trabajo, que realmente no debería tener demasiados problemas de conflictos de fusión . El mejor consejo sería comprometerse temprano y con frecuencia para que no se desvíe de los cambios de otras personas. La mera adición de archivos al proyecto no debería dar lugar a un conflicto a menos que se agreguen exactamente en el mismo punto en el árbol del proyecto. Hemos usado Xcode en nuestro equipo durante años y rara vez tenemos conflictos: solo si alguien ha reestructurado el proyecto.

Afortunadamente, como el formato del archivo Xcode es texto, en general es bastante fácil resolver conflictos cuando ocurren, a diferencia de los Bad Old Days of Codewarrior con su formato binario.

+2

Eclipse funciona de esta manera, por ejemplo.Estoy seguro de que hay otros, los archivos del proyecto son bastante tontos, cuando normalmente solo quieres todos los archivos en tu estructura de directorios, con posibles filtros de ignorar. Dicho esto, parece que los conflictos son bastante resolubles. –

+2

En realidad, muchos crean archivos para Linux/BSD/etc. los sistemas funcionan de esa manera. Los archivos fuente se ordenan en directorios y los archivos make básicamente saben que al construir el destino A, tiene que compilar todos los archivos en las carpetas a, byc y enlazar todos los archivos .o resultantes, al construir el objetivo B, tiene compilar todos los archivos en las carpetas b, e y f. Al construir dos objetivos a la vez, la misma carpeta no se crea dos veces, a menos que el archivo make se haya escrito de esa manera. – Mecki

+0

NetBeans y Visual Studio también hacen esto, la mayoría de las personas nuevas en Xcode probablemente provengan de estos tres IDE. Lo que más me molesta de Xcode es mover un archivo, esto no lo mueve en el disco, por lo que terminas confundiendo estructuras de archivos que no coinciden con lo que está en Xcode. Visual Studio requiere que se agreguen archivos, sin embargo, cuando se mueve un archivo, también lo mueve en el disco. –

4

A pesar de otras respuestas, esto es absolutamente una desviación de otros IDEs, y una gran molestia. No hay una buena solución que yo sepa.

El truco que utilizo mucho para que sea un poco más soportable - especialmente con directorios de recursos con una gran cantidad de archivos en ellos - es decir:

  • seleccionar un directorio en el árbol del proyecto,
  • golpe la tecla de borrar,
  • elija "Eliminar referencias solamente", luego
  • arrastre el directorio al proyecto para volver a agregarlo.

Esto anula cualquier reordenación manual de archivos, pero al menos hace que la sincronización sea una operación O (1), en lugar de ser O (n) en el número de archivos modificados.

+1

Buena idea. Qué dolor en el culo, pero también lo son muchos aspectos del desarrollo para iOS. – benvolioT

Cuestiones relacionadas