Lo que hago es bastante complicado, pero funciona bien para mí.
En la configuración del proyecto de biblioteca estática, en la sección "Empaquetado", configuro la "Extensión de Wrapper" en "marco". Entonces cambio:
"Public Headers Folder Path" to "$(PRODUCT_NAME).$(WRAPPER_EXTENSION)/Headers"
y
"Private Headers Folder Path" to $(PRODUCT_NAME).$(WRAPPER_EXTENSION)/PrivateHeaders
El resultado final de los productos de construcción es una carpeta llamada "MyLibraryName.framework" las agallas de los cuales se parecen a ... bueno .. un Marco . Una cosa que me gusta de esto es que puedo usar Marco de estilo incluye en mi código:
#include <MyLibraryName/blah.h>
La desventaja es que (como se descubrió en la respuesta de "Zoul") el comando "Archivo" no funciona correctamente . La razón por la que no funciona es porque el comando Archive separa los productos finales de compilación y los productos de compilación de destino en directorios separados. Una "compilación" normal no hace eso. Cuando archiva, el sistema intenta encontrar los encabezados de las bibliotecas estáticas en el directorio final de productos de compilación y no puede encontrarlos porque el sistema los colocó en el directorio de compilación de destino para la biblioteca estática.
Si lo piensas, Xcode piensa que el objetivo de tu biblioteca estática tiene un solo "producto". Ese producto es "libMyLibraryName.a". Pero realmente el objetivo tiene dos productos ... uno es la biblioteca, y el otro es el conjunto de encabezados para la biblioteca. El problema con el comando Archivar es que la biblioteca se copia como un producto de compilación, pero los encabezados no lo son. Usted termina con el "encabezado no se pudo encontrar" cuando intenta ejecutar el archivo.
Para corregir ESO, lo que hago es utilizar una fase de compilación Ejecutar script.La secuencia de comandos se parece a esto (escrito en Ruby):
if ENV["TARGET_BUILD_DIR"] != ENV["BUILT_PRODUCTS_DIR"] then
$product_name = ENV['PRODUCT_NAME']
$wrapper_extension = ENV['WRAPPER_EXTENSION']
$target_build_dir = ENV['TARGET_BUILD_DIR']
$built_products_dir = ENV['BUILT_PRODUCTS_DIR']
$source_file = File.join($target_build_dir, $product_name + "." + $wrapper_extension)
$dest_file = File.join($built_products_dir, $product_name + "." + $wrapper_extension)
system "ln -s #{$source_file} #{$dest_file}" if File.exist?($source_file)
end
lo tanto, si el directorio de construcción de destino y el directorio de productos construidos no coinciden ... crear un enlace simbólico al "marco" falso que he creado en los productos construidos dir.
Como dije, este es un esquema complejo, pero funciona y me permite usar el estilo de framework que me gusta. Todo el lío se simplificaría mucho si Xcode permitiera a los desarrolladores de iOS crear Frameworks (lo que también significaría que iOS permitiría a los desarrolladores crear bibliotecas dinámicas, algo que Apple es reacio a hacer) o si Apple crearía una variante de marcos ... un paquete que contiene una biblioteca estática y los encabezados que la acompañan (¿static_framework?) para que tenga un producto de compilación que contenga tanto los encabezados como la biblioteca estática.
He estado tratando de encontrar una solución elegante para esto durante días. La tuya es la mejor que he encontrado hasta ahora. – Bastek
@zoul ¿podría expandirse? los tutoriales que he visto no llegan a explicar el proceso. Lo que he hecho es 1) crear un toque táctil de cacao estático, 2) arrastrar y soltar el archivo xcodeproj a un grupo de 'Dependencias' en el proyecto de cliente, 3) agregarlo a Dependencias de destino y Binario de enlace, y 4) intentar establecer las rutas de búsqueda del encabezado ... y no hay forma de que este último paso funcione :( – entonio
@entonio, [aquí hay un buen tutorial] (http://blog.carbonfive.com/2011/04/04/using- open-source-static-libraries-in-xcode-4/# adding_the_static_librarys_headers) que puede que aún no hayas leído. También cubre la configuración de las rutas de los encabezados, es de esperar que esté actualizado después de los dos años desde que se publicó. – zoul