tag manager google workspace xcodebuild

workspace - google - https tag manager



Xcodebuild''ing un espacio de trabajo y establecer una ruta de compilaciĆ³n personalizada (3)

Estoy tratando de usar xcodebuild para construir un proyecto multiproyecto en un área de trabajo. Cuando XCode crea un espacio de trabajo, coloca automáticamente todos los artefactos de compilación en un directorio común en DerivedData para que cada proyecto pueda acceder a las dependencias.

Si utilizo este comando:

xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release

Todo funciona, pero los artefactos se colocan en el directorio de datos derivados habituales. Luego quiero aparecer en un directorio específico al que puedo acceder desde las compilaciones de CI. Así que intenté esto

xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release SYMROOT=build/products OBJROOT=build/intermediates

Sin embargo xcodebuild falla con este dicho

Details: Failed to load dependencies output contents from ``/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d''''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “DNRootSelector.d” couldn’t be opened because there is no such file." UserInfo=0x4012fea40 {NSFilePath=/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d, NSUnderlyingError=0x4012fc240 "The operation couldn’t be completed. No such file or directory"}. User info: { NSFilePath = "/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d"; NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 /"The operation couldn/U2019t be completed. No such file or directory/""; }

El problema parece ser que xcodebuild ya no usa un directorio central para todos los proyectos en el área de trabajo y en su lugar está almacenando los artefactos en cada proyecto. Por lo tanto, no puede ubicar las dependencias entre el código que se compila y los artefactos producidos en otros proyectos.

¿Alguien sabe el parámetro correcto para establecer en la línea de comandos?

La referencia de configuración de compilación de Xcode no se ha actualizado durante dos años, por lo que no sé si hay nuevas configuraciones de compilación que pueda aplicar.


La mejor solución que he encontrado hasta ahora es usar el parámetro CONFIGURATION_BUILD_DIR con una ruta ABSOLUTE (por ejemplo, / tmp / $ PROJECT / build). Me gusta esto:

xcodebuild -scheme "scheme" -configuration Debug -sdk iphoneos clean build CONFIGURATION_BUILD_DIR=$ABSOLUTE_BUILD_PATH

Uso Jenkins y ahí tengo una variable llamada $WORKSPACE . Con $WORKSPACE/build como mi CONFIGURATION_BUILD_DIR Tengo una solución con la que estoy contento.

Los caminos relativos no parecen funcionar como se esperaba. Debemos presentar un informe de error.


No estoy seguro de si esta es una nueva opción, pero la versión 5.0 de xcodebuild tiene una opción -derivedDataPath que le permite especificar el directorio en el que desea que se sientan todos los productos de compilación.

Por ejemplo, pasar la -derivedDataPath build crea la -derivedDataPath build la carpeta en relación con el lugar desde donde ejecutó xcodebuild , y puede encontrar su aplicación de manera predecible en una subcarpeta como build/Build/Products/Release-iphoneos .

Documentación: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html


También encontré este problema cuando construí mi proyecto desde la herramienta Jenkins CI. Mi proyecto principal depende de un subproyecto. He intentado construir la solución de @ Chilloutman como esta:

xcodebuild -target TravelGuideMdd -sdk iphoneos -configuration DailyBuild clean build CONFIGURATION_BUILD_DIR=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build BUILD_DIR =/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

o

xcodebuild -target TravelGuideMdd -sdk iphoneos -configuration DailyBuild clean build CONFIGURATION_BUILD_DIR=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

Ambos ocurren errores. Could not find iphoneos in /Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

Pero finalmente tengo éxito usando esto:

xcodebuild -target TravelGuideMdd -sdk iphoneos6.1 -configuration DailyBuild clean build SYMROOT=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

Es decir: configurar el SYMROOT con una ruta absoluta.