El "Dialecto del lenguaje C" se configuró en "GNU99" en lugar de "Compilador predeterminado". Anteriormente el estándar era GNU99 pero ahora no lo es. En algún momento, Xcode no migró la configuración del proyecto de la biblioteca correctamente y, por lo tanto, se configuró en GNU99. Una vez que lo cambié a GNU99, ¡dejó de recompilar todo mi código cada vez!
¡¡¡Hasta aquí todo bien!!! Dame una hora y la recompensa es tuya si sigue así.
Adam Waite
77
Argh ha vuelto a recompilar todo
Adam Waite
1
Tengo el mismo comportamiento Si borro los datos derivados (o cambio el dialecto del lenguaje C) funcionará durante aproximadamente 10 compilaciones. Después de eso, vuelve a reconstruir todo.
bluebamboo
1
Xcode 8.2 (beta 2) funciona para 10 compilaciones y luego reconstruye todo desde cero, pero aún mejor que el anterior.
Markus
3
Lamentablemente, el problema persiste en Xcode 8.3 beta 2 (al menos para nosotros). No se puede medir una mejora notable en nuestro proyecto.
Kasper Munck
20
Vaya a Producto -> Esquema -> Editar esquema. Seleccione Construir en la columna del lado izquierdo y desmarque " Buscar dependencias implícitas "
Pero esta bandera debe permanecer marcada cuando esté creando el proyecto por primera vez.
@ Josh, ¿está utilizando múltiples proyectos dentro de su proyecto (por ejemplo, subproyecto o incluido)? ¿Y está seguro al mirar su salida de compilación que realmente está reconstruyendo todo?
Móvil Ben
3
Es un espacio de trabajo básico con cocoapods y el proyecto principal. CocoaPods permanece construido, pero el proyecto principal reconstruye cada archivo; viendo la salida de compilación y definitivamente sus más de 100 archivos de reconstrucción.
Josh
1
Actualización: parece que esta solución funciona para algunas compilaciones después de hacerlo, sin embargo, también lo hace la limpieza de todo el proyecto y la reconstrucción. Sin embargo, para la reconstrucción 2-8 veces, comienza a recompilar todo nuevamente. ¿Algunas ideas? Más que frustrante.
Josh
Esto no funciona, al menos no con un espacio de trabajo de CocoaPods. Todo se construye, cada vez. Súper molesto, especialmente porque Apple ha tenido años para solucionar este problema.
Womble
7
La solución para mí fue simplemente cerrar el guión gráfico, abrí el archivo fuente con el editor asistido y también abrí el archivo del guión gráfico (cerrando el guión gráfico, ya que no estaba haciendo ningún cambio) eliminé toda la compilación innecesaria
La mejor mejora que pude hacer fue modularizar mi proyecto. Modularizando específicamente la capa ORM que se utiliza en casi todas las demás clases. Al mover ese código a un destino separado dentro de mi proyecto e importarlo como un módulo, pude mejorar enormemente los tiempos de compilación. Xcode ya no decide recompilar archivos innecesarios cuando hago una compilación.
Ahora uso el método de compilación Single File para compilaciones de depuración incrementales rápidas.
Todavía ha sido un problema constante para mí con Xcode 9. Al igual que muchos de ustedes, estoy trabajando en un gran proyecto rápido de 4 / cocoapods con muchos archivos fuente y volver a compilar cada archivo cada vez es irritante.
Hasta ahora obtengo los mejores resultados con la siguiente configuración. Le sugiero que lo pruebe y vea cómo funciona para usted.
Cambié algunas cosas con mi código con respecto al encabezado del prefijo que parece haber solucionado este problema. No sé cuál realmente hizo el truco, pero los compartiré con la esperanza de que ayude a alguien más. Si no tiene un encabezado de prefijo establecido, entonces supongo que este no es el problema (o el problema es multifacético).
Elimine las importaciones del encabezado de prefijo que son archivos del directorio de productos compilados para que pueda cambiar la configuración de compilación para esto ("El encabezado precompilado usa archivos del directorio de compilación") a "No". Asegúrese de que no se importe indirectamente a través de otras importaciones también.
Elimine cualquier importación del encabezado de prefijo que use módulos Clang (bibliotecas o marcos que tienen un archivo module.modulemap en su directorio Headers, para que pueda escribir código como @import MyModule). (Para mí, esto y el paso 1 eran lo mismo).
Establezca la configuración de compilación para compartir encabezado de prefijo en "Sí". (No creo que esto sea necesario, y no debería tener ningún efecto en mi propio proyecto. Solo digo esto porque lo cambié porque estaba dispuesto a intentar cualquier cosa. :))
Salga de Xcode y elimine su directorio DerivedData / ModuleCache (configurado para estar en ~ / Library / Developer si no recuerdo mal).
Si eso todavía no funciona, puede intentar eliminar algunas importaciones más de su encabezado de prefijo. Puede haber algo tropezando ...
También agregué este valor, el tiempo de construcción es más rápido pero no resolvió la construcción incremental. He cambiado el compilador Swift - Generación / depuración de código a optimización rápida y completa del módulo ... es el mejor resultado hasta ahora
Antonio Junior
ni siquiera puedo encontrar Definido por el usuario)
David Seek
2
@DavidSeek está en la parte inferior de la Configuración de compilación
Consulte todo el código de las @IBDesignabledirectivas en mi caso particular, el proyecto de construcción de Xcode todo el tiempo porque tenía algunas vistas en mi guión gráfico que contenía estos @IBDesignableatributos en él. Lo segundo es que también tengo mi guión gráfico abierto en una ventana separada (no en una pestaña) que empuja mi Xcode para crear compilaciones para todos los simuladores para siempre.
Usamos bastantes @IBDesignabledirectivas ... ¿hay algo en particular que debamos buscar?
Stan
Creo que es posible encontrarlos excluyendo uno por uno, y verificar el resultado, mi caso fue solo 2 de las directivas @IBDesignable en todo el proyecto.
ua24
2
Madhuri Mane tiene toda la razón con respecto a esto. Para agregar un poco más de claridad, algunos puntos importantes a tener en cuenta:
Esto SÓLO es aplicable si tiene dependencias implícitas en bibliotecas / marcos en los que se basa su objetivo.
Si "Buscar dependencias implícitas" está deshabilitado:
Resultado: la biblioteca no se creará antes de crear el destino de la aplicación. El objetivo de la aplicación no se puede construir.
Solución: para asegurarse de que no ocurra el segundo escenario, debe agregar los objetivos necesarios en la lista de objetivos y ordenarlos correctamente.
Ahora, si todo su proyecto está alojado dentro de un objetivo y eso toma 4 minutos para compilar, no hay mucho que pueda hacer al respecto, excepto dividirlo en marcos para aprovechar lo anterior o descubrir dónde queda la compilación. Si está usando algo como PaintCode o tiene grandes porciones de código UIKit en un cambio rápido, cámbielo a Objective-c, se compila mucho más rápido
Vaya a la configuración de compilación del proyecto y cambie el "Dialecto del lenguaje C".
El "Dialecto del lenguaje C" se establece en "GNU99" en lugar de "Compilador predeterminado" cuando actualiza la versión de xcode. En algún momento, Xcode no migró la configuración del proyecto de la biblioteca correctamente y, por lo tanto, se configuró en GNU99. Esto solucionará el problema
Si ha realizado cambios en el archivo Swift, comience a compilar la aplicación, vaya a la última pestaña y haga clic en el registro de compilación, durante la etapa "Comprobar dependencias", detenga la compilación y ejecútela de nuevo. En la segunda ejecución, solo debería compilar los archivos que modificó. Si se hace correctamente, he encontrado que funciona cada vez. No es necesario realizar ningún cambio en la configuración del proyecto.
Esto parece ser un error en Xcode.
Si ve que la aplicación está haciendo una compilación completa, deténgala e intente este truco nuevamente.
Si no ha realizado ningún cambio en el código, utilice CMD + CTRL + R para ejecutar sin compilar la aplicación que adjunta el depurador. No creará una aplicación, pero puede ayudar a ahorrar tiempo innecesario.
Esto realmente funciona, pero a veces XCode fallará con el código 1 y tendrá que hacer una compilación limpia. Es una pesadilla
Antonio Junior
Hay otros escenarios en los que Xcode siempre realizará una compilación completa. He descubierto que si modifica el archivo .h incluido en el encabezado de puente, reconstruirá todos los archivos Swift. Puede haber otros escenarios que no están relacionados con el error de Xcode.
Vlad
Hay escenarios en los que el único cambio es un cambio de nombre de función o una nueva propiedad agregada a una clase / estructura existente que resulta en una reconstrucción completa.
Intente: 1. Navegar al Proyecto 2. Haga clic en Configuración de compilación 3. Verifique que OptimizationLevel esté configurado en Ninguno para la depuración. 4. Haga clic en Agregar configuración definida por el usuario 5. Establezca SWIFT_WHOLE_MODULE_OPTIMIZATION en YES.
nada para trabajar todavía se compila cuando escribo una sola carta.
Chandni
-2
para facilitar el tiempo de compilación de xcode, puede hacer uso de IRAMDISK (disco de memoria virtual). Medios muy útiles y efectivos para reducir el tiempo de compilación.
También se puede usar para acelerar la aplicación de uso frecuente.
Respuestas:
Actualización 2017/1/2
Este problema no se ha resuelto en Xcode 8.2.1 (para mi proyecto)
¿Como sobrevivir?
Actualizar 2016/12/17
Este problema no se ha resuelto en Xcode 8.2.
Actualizar 12/12/2016
El átomo para codificar y la línea de comandos para compilar y depurar es mi elección ahora. Espero que Apple arregle este error legítimo pronto.
Actualización 2016/12/04
Este problema parece resuelto con Xcode 8.2 (beta 2) .
Pero para mí no está resuelto, me enfrento a este problema incluso cuando uso Xcode 8.2. Puede intentarlo (descargue Xcode8.2 beta2 aquí )
Antigua respuesta: esta es una solución:
Pestaña "Configuración de compilación" -> "Dialecto del lenguaje C" -> Cámbielo a "Compilador predeterminado".
Para referencia :
fuente
Vaya a Producto -> Esquema -> Editar esquema. Seleccione Construir en la columna del lado izquierdo y desmarque " Buscar dependencias implícitas "
Pero esta bandera debe permanecer marcada cuando esté creando el proyecto por primera vez.
fuente
La solución para mí fue simplemente cerrar el guión gráfico, abrí el archivo fuente con el editor asistido y también abrí el archivo del guión gráfico (cerrando el guión gráfico, ya que no estaba haciendo ningún cambio) eliminé toda la compilación innecesaria
fuente
ACTUALIZADO
La mejor mejora que pude hacer fue modularizar mi proyecto. Modularizando específicamente la capa ORM que se utiliza en casi todas las demás clases. Al mover ese código a un destino separado dentro de mi proyecto e importarlo como un módulo, pude mejorar enormemente los tiempos de compilación. Xcode ya no decide recompilar archivos innecesarios cuando hago una compilación.
Ahora uso el método de compilación Single File para compilaciones de depuración incrementales rápidas.
Hay algunas otras buenas sugerencias en este enlace, incluida la refactorización de código, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
ANTIGUO
Todavía ha sido un problema constante para mí con Xcode 9. Al igual que muchos de ustedes, estoy trabajando en un gran proyecto rápido de 4 / cocoapods con muchos archivos fuente y volver a compilar cada archivo cada vez es irritante.
Hasta ahora obtengo los mejores resultados con la siguiente configuración. Le sugiero que lo pruebe y vea cómo funciona para usted.
Se agregaron configuraciones de compilación personalizadas definidas por el usuario,
Nota: No tengo la configuración personalizada definida por el usuario para la optimización de todo el módulo.
fuente
Cambié algunas cosas con mi código con respecto al encabezado del prefijo que parece haber solucionado este problema. No sé cuál realmente hizo el truco, pero los compartiré con la esperanza de que ayude a alguien más. Si no tiene un encabezado de prefijo establecido, entonces supongo que este no es el problema (o el problema es multifacético).
@import MyModule
). (Para mí, esto y el paso 1 eran lo mismo).Si eso todavía no funciona, puede intentar eliminar algunas importaciones más de su encabezado de prefijo. Puede haber algo tropezando ...
fuente
Parece que están trabajando activamente en ello de acuerdo con https://forums.developer.apple.com/thread/62737 pero una solución es agregar
HEADERMAP_USES_VFS = YES
en la configuración de compilación de su objetivo (Proyecto -> Destino -> Configuración de compilación -> Definido por el usuario).
Esta solución funcionó siempre para mí hoy, después de que ninguna otra solución haya funcionado de manera constante durante el último mes.
EDITAR: todavía a veces recompila todo, aunque parece hacerlo con mucha menos frecuencia con esta configuración definida.
fuente
Consulte todo el código de las
@IBDesignable
directivas en mi caso particular, el proyecto de construcción de Xcode todo el tiempo porque tenía algunas vistas en mi guión gráfico que contenía estos@IBDesignable
atributos en él. Lo segundo es que también tengo mi guión gráfico abierto en una ventana separada (no en una pestaña) que empuja mi Xcode para crear compilaciones para todos los simuladores para siempre.fuente
@IBDesignable
directivas ... ¿hay algo en particular que debamos buscar?Madhuri Mane tiene toda la razón con respecto a esto. Para agregar un poco más de claridad, algunos puntos importantes a tener en cuenta:
Esto SÓLO es aplicable si tiene dependencias implícitas en bibliotecas / marcos en los que se basa su objetivo.
Si "Buscar dependencias implícitas" está deshabilitado:
Fuente y lectura adicional sobre el tema: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Ahora, si todo su proyecto está alojado dentro de un objetivo y eso toma 4 minutos para compilar, no hay mucho que pueda hacer al respecto, excepto dividirlo en marcos para aprovechar lo anterior o descubrir dónde queda la compilación. Si está usando algo como PaintCode o tiene grandes porciones de código UIKit en un cambio rápido, cámbielo a Objective-c, se compila mucho más rápido
fuente
Vaya a la configuración de compilación de su objetivo y configúrelo
Defines Module
enYes
.Trabajó para mí para un par de compilaciones, demasiado pronto para afirmar que esta es una solución definitiva, pero al menos lo estamos intentando.
fuente
Apple lanzó ayer una nueva versión beta de Xcode (14 de noviembre)
Xcode 8.2 beta 2
Y este problema se ha marcado como resuelto en la nota de lanzamiento.
Me esta funcionando. La velocidad de construcción volvió como siempre. ¡Todos los que se enfrentan a este problema deberían intentarlo!
https://developer.apple.com/download/
fuente
Vaya a la configuración de compilación del proyecto y cambie el "Dialecto del lenguaje C".
El "Dialecto del lenguaje C" se establece en "GNU99" en lugar de "Compilador predeterminado" cuando actualiza la versión de xcode. En algún momento, Xcode no migró la configuración del proyecto de la biblioteca correctamente y, por lo tanto, se configuró en GNU99. Esto solucionará el problema
fuente
Si ha realizado cambios en el archivo Swift, comience a compilar la aplicación, vaya a la última pestaña y haga clic en el registro de compilación, durante la etapa "Comprobar dependencias", detenga la compilación y ejecútela de nuevo. En la segunda ejecución, solo debería compilar los archivos que modificó. Si se hace correctamente, he encontrado que funciona cada vez. No es necesario realizar ningún cambio en la configuración del proyecto.
Esto parece ser un error en Xcode.
Si ve que la aplicación está haciendo una compilación completa, deténgala e intente este truco nuevamente.
Si no ha realizado ningún cambio en el código, utilice CMD + CTRL + R para ejecutar sin compilar la aplicación que adjunta el depurador. No creará una aplicación, pero puede ayudar a ahorrar tiempo innecesario.
fuente
Problema de mi lado solucionado aplicando la desmarcación a la solución "Buscar dependencias implícitas".
PERO recuerde si está utilizando cocoapods, para aplicar esta configuración también a su proyecto de pod seleccionándolo desde
Producto -> Esquema -> Pods- "yourProjectName"
también se aplica en:
Producto -> Esquema -> "yourProjectName"
Me ayudó, así que espero que esta pista ayude a alguien más.
Gracias
fuente
Intente: 1. Navegar al Proyecto 2. Haga clic en Configuración de compilación 3. Verifique que OptimizationLevel esté configurado en Ninguno para la depuración. 4. Haga clic en Agregar configuración definida por el usuario 5. Establezca SWIFT_WHOLE_MODULE_OPTIMIZATION en YES.
fuente
para facilitar el tiempo de compilación de xcode, puede hacer uso de IRAMDISK (disco de memoria virtual). Medios muy útiles y efectivos para reducir el tiempo de compilación.
También se puede usar para acelerar la aplicación de uso frecuente.
consulte el siguiente enlace para descargar y usar: http://iramdisk.findmysoft.com/mac/
fuente