2012-04-12 25 views
13

Estoy tratando de 'importar' mi base de código C++ existente en mi proyecto XCode iOS.Obtención de XCode para incluir, compilar y vincular código base existente (C++) en XCode 4.3 (.1)

El problema es que xCode no compilará (y por lo tanto no vinculará) mi código. Esto es lo que he hecho hasta ahora:

  • Archivo> Agregar archivos a "Proyecto". No marque "Copiar archivos" ya que es una base de código compartida para varias plataformas y no es posible realizar varias copias del código fuente.
  • Agregué la ruta adecuada a la configuración del proyecto "Ruta de búsqueda de encabezado". Al incluir trabajos de encabezado, puedo #incluir "stuff.h" de mi archivo Objective-C++ (.mm).

Sin embargo, no encuentro ninguna forma de decirle a XCode que compile los archivos .cpp?

Unos pocos puntos:

  • No estoy buscando una manera de comprobar la validez compilarlo en una biblioteca y la vinculación de esa manera
  • El proyecto es un proyecto de Objective-C estándar de iOS. El código C++ que se llama de ella (que no es un problema)

actualización

He añadido el directorio de base de código a la diana "Fuentes Compilar". De hecho, tengo que hacer clic en "Agregar otro ..." en el cuadro de diálogo que aparece, ya que no puedo seleccionar la referencia del directorio a mi base de código.

Cuando lo agrego, XCode me pregunta si quiero "Crear un proyecto de sistema de compilación externo". Lo dejo marcado y los dos campos con los valores predeterminados "/ usr/bin/make" y "$ (ACTION)". Sin embargo, mi base de código no se compila durante la compilación. ¿Tengo que escribir mi propio Makefile?

Si no selecciona "Crear proyecto del sistema de acumulación externa", entonces una referencia directorio se crea en el marco del objetivo, pero no compilados durante la construcción y una advertencia se emite:

warning: no rule to process file '$(PROJECT_DIR)/../codebase' 
of type folder for architecture i386 

Respuesta

18

Incluso si usted don 'verifique copie los archivos usted tiene que comprobar agregar a los objetivos al agregar los archivos al proyecto.

enter image description here

Si se olvida de hacer eso, se puede seleccionar el objetivo, ir a la Construir Fases ficha y añadir los archivos a Compilar Fuentes.

enter image description here

+0

El objetivo (tener solo uno) está marcado en Agregar a destinos. – olafure

+0

¿Tiene sus archivos cpp enumerados en ** Fuentes de compilación **? Si no, ¿has intentado agregarlos? – sch

+4

Estamos llegando :) Si agrego un solo archivo .cpp, se incluye en la compilación. Sin embargo, si selecciono el directorio completo (vea mi pregunta actualizada), nada se construye. Prefiero no seleccionar todos mis archivos .cpp de gazillion manualmente (incluir rutas sería incorrecto y un infierno adicional para tener que agregar/eliminar archivos manualmente en el futuro) – olafure

8

Si usted va a sus objetivos -> Construir Fases -> Compilar Fuentes -> "+" -> "Agregar Otros" -> (seleccione su carpeta de origen externo) -> Seleccionar: Crear grupo de cualquier carpeta agregada -> Desmarcada: copia los elementos en el destino.

Ahora su carpeta estará en XCode, imitar la estructura. Si agrega archivos de origen a esa carpeta en XCode, los archivos de origen se agregarán a su directorio de origen externo sin problemas.Por lo tanto, se soluciona la facilidad de usar IDEs múltiples y tener que administrar el enlace de origen.

La captura. Aún debe agregar manualmente los archivos al área "Fuentes de compilación". Esto es bastante simple. Simplemente haga clic y arrastre sus archivos fuente desde el directorio del grupo en XCode a la derecha en la ventana Compilar orígenes. Entonces, hay un paso adicional cuando agrega un archivo fuente ahora. Olvidarse de agregarlos a la ventana Fuentes de compilación arrojará símbolos no resueltos que compilarán errores.

+5

¿Cómo esto se considera una opción viable por los desarrolladores de iOS me deja alucinado. Esto está bien si tienes un par de archivos pero es ridículo cuando tienes cientos. No puedo creer que este problema no haya sido abordado desde XCode 8. – enl8enmentnow

+0

Solo ver "arrastrar y soltar" me deja alucinado. Este archivo .pbxproj me sorprende, su formato es tan estúpido. Trabajar con múltiples desarrolladores en múltiples objetivos hace que todo este proceso se rompa con todas esas referencias. Si agrega un objetivo a su proyecto antes de combinar una solicitud de extracción, por ejemplo, su nuevo objetivo no se asociará a los nuevos "archivos fuente" en los que se fusiona ... vaya a calcular los que faltan ahora. El peor IDE de todos los tiempos, y he usado muchos. – koxon