Cada una de las soluciones que he visto para este problema me ha parecido poco elegante (copiar encabezados en el proyecto de la aplicación) o demasiado simplificada hasta el punto de que solo funcionan en situaciones triviales.
La respuesta corta
Agregue la siguiente ruta a sus rutas de búsqueda de encabezado de usuario
"$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
¿Por qué funciona esto?
Primero, debemos comprender el problema. En circunstancias normales, es decir, cuando ejecuta, prueba, perfila o analiza, Xcode crea su proyecto y coloca la salida en el directorio Build / Products / Configuration / Products, que está disponible a través de $ BUILT_PRODUCTS_DIR macro .
La mayoría de las guías sobre bibliotecas estáticas recomiendan configurar la Ruta de la carpeta de encabezados públicos en $ TARGET_NAME , lo que significa que su archivo lib se convierte en $ BUILT_PRODUCTS_DIR /libTargetName.a y sus encabezados se colocan en $ BUILT_PRODUCTS_DIR / TargetName. Siempre que su aplicación incluya $ BUILT_PRODUCTS_DIR en sus rutas de búsqueda, las importaciones funcionarán en las 4 situaciones indicadas anteriormente. Sin embargo, esto no funcionará cuando intente archivar.
El archivo funciona de forma un poco diferente
Cuando archivas un proyecto, Xcode usa una carpeta diferente llamada ArchiveIntermediates. Dentro de esa carpeta encontrará / YourAppName / BuildProductsPath / Release-iphoneos /. Esta es la carpeta que apunta $ BUILT_PRODUCTS_DIR cuando realiza un archivo. Si mira allí, verá que hay un enlace simbólico a su archivo de biblioteca estático construido, pero falta la carpeta con los encabezados.
Para encontrar los encabezados (y el archivo lib) debe ir a IntermediateBuildFilesPath / UninstalledProducts /. Recuerde cuando le dijeron que configurara Omitir instalación en SÍ para las bibliotecas estáticas? Bueno, este es el efecto que tiene la configuración cuando haces un archivo.
Nota al margen: si no lo configura para omitir la instalación, sus encabezados se colocarán en otra ubicación y el archivo lib se copiará en su archivo, lo que le impedirá exportar un archivo .ipa que puede enviar a la App Store. .
Después de mucha búsqueda, no pude encontrar ninguna macro que se corresponda exactamente con la carpeta UninstalledProducts, de ahí la necesidad de construir la ruta con "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
Resumen
Para su biblioteca estática, asegúrese de omitir la instalación y de que sus encabezados públicos se coloquen en $ TARGET_NAME.
Para su aplicación, configure las rutas de búsqueda del encabezado de usuario en "$ (BUILT_PRODUCTS_DIR)", que funciona bien para compilaciones normales, y "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts", que funciona para compilaciones de archivos.