2010-07-16 12 views
27

En primer lugar, nunca he desarrollado con Xcode. Tengo un proyecto que he desarrollado en un entorno determinado (Linux y emacs) y ahora algunos colegas que usan un entorno diferente trabajarán conmigo. Este es un proyecto de C++ que utiliza CMake.Trabajar con CMake y Xcode: mantener los cambios del proyecto cuando se modifique CMakeLists.txt

Larga historia corta:

  • uso Linux/emacs. Otros desarrolladores usan mac/Xcode.
  • Utilizo el generador GNU Makefiles. Usan el generador Xcode.
  • Todo parecía funcionar bien.

El problema

desarrolladores Xcode utilizarán el ejecutable que aparece bajo el ejecutables lista de archivos del Grupo & ventana de Xcode . Lo configurarán haciendo doble clic y agregando sus ajustes (configurando directorios de depuración, estableciendo variables de entorno, pero más importante,, estableciendo los argumentos del ejecutable).

Cuando un desarrollador (ME) cambia el CMakeLists.txt (es decir, añadir un nuevo archivo de origen), los desarrolladores XCode se ven obligados a volver a generar su proyecto y que pierden toda la configuración mencionada anteriormente.

Pregunta: ¿Hay alguna manera de evitar esto?

Si cada desarrollador de Xcode pierde constantemente esa configuración, yo sería el único que usaría CMake. :(

Gracias por su ayuda!

+9

¿Por qué votar abajo? Me parece una pregunta sensata. –

Respuesta

10

Puede añadir un objetivo que se ejecuta el programa por add_custom_target(foobar COMMAND foo --bar DEPENDS foo). También puede llamar a un script en lugar del programa, en el que es fácil de configurar las variables de entorno (utilizo este configuración en Win32 para modificar rutas en VC). Este script también podría ser una plantilla en el VCS, por lo que cada desarrollador tiene una versión propia de la secuencia de comandos con los parámetros de la línea de comando.

+0

Supongo que esta es una solución válida, pero en mi caso no es nada práctica:/ – YuppieNetworking

10

Creo que va a perder esto Uno. Xcode almacena todas las definiciones de proyecto en un archivo llamado Foo.xcodeproj/project.pbxproj. Cuando uno de los desarrolladores de Mac cambia un indicador o configuración, se registra en el archivo project.pbxproj. nge su archivo CMakeLists.txt, CMake desencadena una reconstrucción de project.pbxproj, borrando todos los cambios del desarrollador de Mac. Xcode no fue diseñado con CMake en mente, y ellos dos funcionan muy bien juntos.

Una posible solución (que no es la mejor para los desarrolladores de Mac) es usar CMake para generar makefiles. Tendrían que escribir unos pocos comandos personalizados en Xcode que invoquen CMake/Make para compilar los ejecutables, pero podrían pasar argumentos a CMake para controlar el proceso de compilación. Los ejecutables se definirían por separado a Xcode, y CMake solo borraría los Makefiles. Esta podría ser una forma de mantener a todos contentos.

La gente de CMake no ha dado a Xcode la atención que se merece, en mi humilde opinión. Pero esta limitación es inherente a la arquitectura de Xcode, y será una tuerca dura.

Espero que esto ayude,
-Dan

Editar:

Sus desarrolladores Xcode tiene cierta capacidad limitada para usar "Ajustes definidos por el usuario". No sé cómo usarlos (soy un chico de emacs/make-sort), pero quizás podrían usarlos para anular la configuración de CMake.

+0

probaré estas configuraciones definidas por el usuario y me pondré en contacto con usted – YuppieNetworking

+0

He comprobado pero estas configuraciones son muy limitadas. Ni siquiera puedo definir argumentos para los archivos ejecutables: S – YuppieNetworking

+0

7 años después y Xcode y CMake todavía apestan – Lothar

Cuestiones relacionadas