xcode project target naming duplication

Al duplicar un objetivo en Xcode, ¿hay alguna forma de establecer el nombre que el objetivo tendrá antes o cuando se cree?



project target (5)

Duplicar un objetivo en Xcode es una gran manera de crear múltiples aplicaciones o productos de framework / library que tienen características algo diferentes usando la misma base de código como resultado de un código condicional controlado por variables ambientales establecidas dentro de la configuración de compilación de destino o esquemas relacionados. Primero duplique su versión básica de trabajo conocido, luego establezca las variables ambientales que utilizará cada destino, luego comience a dividir el comportamiento del código con las declaraciones #ifdef del preprocesador en línea.

Sin embargo, cualquier objetivo duplicado se denominará "Copia original del nombre de destino". Esto se puede cambiar de nombre, pero el info.plist también tendrá este nombre, también puede aparecer en un par de configuraciones de compilación esenciales, y puede ser un proceso tedioso y de introducción de errores eliminar todas las referencias a la copia no informativa. "versión del nombre del objetivo duplicado según cómo lo haga. Cuando creo marcos de iOS esto parece ser especialmente propenso a presentar problemas.

Mi pregunta es si existe alguna técnica para duplicar un objetivo que le permita especificar el nuevo nombre de destino en el momento de la duplicación, por lo que nunca se creará un nombre de destino incorrecto temporal ni se crearán archivos que contengan ese nombre temporal incorrecto. O, alternativamente, si hay alguna forma de utilizar la funcionalidad de "refactorización" para corregir esto, es una forma automática.

Si hay algún tipo de suposición incorrecta contenida en la pregunta que explica por qué esta característica no se ha incluido en Xcode, hágamelo saber. Estoy usando 4.3.


En Xcode 6 (no estoy seguro acerca de las versiones anteriores), la duplicación de un objetivo generará el apéndice "copiar" y cambiará el nombre de todos los menús localizados, por ejemplo. Sin embargo, es reversible actualizando el nombre del producto en Packaging en Build Settings / All. Info.plist aún tendrá que ser atendido, así como el esquema de nombres.


Haga doble clic en el destino para al menos cambiar el nombre del objetivo ... aún buscando cambiar el nombre del producto, pero eso no es tan importante si puede cambiar el nombre de todo lo demás (como el nombre para mostrar, etc.))


Lamentablemente, estoy bastante seguro de que no hay una interfaz de usuario actual para esto, aunque estoy totalmente de acuerdo en que sería una gran mejora; No puedo hablar por todos, pero casi nunca quiero que un objetivo llamado Foo copie . Sugeriría archivar un Radar .


Podrías, con un poco de esfuerzo, usar CMake para eso. Es un generador de sistema de construcción.

Puede ser difícil al principio aprender y configurar el proyecto, y algunas cosas (actualmente) no son fácilmente posibles para Xcode (como la adición de recursos) pero haría muy fácil la creación de nuevos objetivos con una configuración básica.

Básicamente, usted escribe los archivos CMakeLists.txt en su árbol fuente para definir sus bibliotecas y objetivos, luego define los archivos fuente, etc., y luego genera el proyecto Xcode cada vez.

Agregar un nuevo objetivo sería muy fácil:

  1. ADD_EXECUTABLE( Target_Name Source_Files )
  2. SET_TARGET_PROPERTIES( Target_Name PROPERTIES COMPILE_DEFINITIONS Your_Additional_Defines )
  3. Rerun CMake. (Ni siquiera es necesario cerrar el proyecto Xcode)

Desventajas:

  • Toma tiempo para configurar
  • A veces, la investigación es necesaria para que algunas cosas funcionen
  • Algunas cosas actualmente no son bien compatibles a través de CMake

  • seleccionar proyecto en el panel Navigator
  • seleccione el objetivo que quiere duplicar
  • Haga clic con el botón derecho del mouse y elija "Duplicar"
  • Cambiar el nombre del objetivo en XCode: haga clic en el objetivo seleccionado y se iniciará la edición en línea.
  • Abre Terminal y ve a tu directorio / carpeta de proyecto
  • Ejecute svn status para ver los cambios que XCode acaba de realizar.
  • XCode ha creado un nuevo archivo Infocopy.plist y lo ha agregado bajo control de versión si usa uno. Por lo general, desea elegir un nombre diferente, así que siga estos pasos:
  • Cancelar complemento de control de versión: $> svn revert Infocopy.plist
  • Renombrarlo: $> mv Infocopy.plist YourNameInfo.plist
  • Agréguelo al control de la versión: $> svn agregue YourNameInfo.plist
  • Establezca el nuevo nombre en su nueva configuración de generación de destino denominada "Archivo Info.plist"
  • Cambie el nombre del archivo de destino correctamente: $> mv OrigTargetCopy.xcscheme YourTargetName.xcscheme
  • Agregue el nuevo archivo de destino bajo control de versión: $> svn agregue YourTargetName.xcscheme
  • Cambie el nombre de su producto en su nueva configuración de generación de destino denominada "Nombre del producto"
  • Es muy probable que también desee establecer nuevas configuraciones de compilación de "macros de preprocesador" para su nuevo objetivo.
  • Establezca los valores correctos Your YourNameInfo.plist
  • Establezca la asignación de destino para archivos específicos de destino. Normalmente, YourNameInfo.plist será parte de su nuevo objetivo. Puede haber muchos otros archivos similares (icono, pantalla de inicio, otros gráficos, etc.).