prosumer caracteristicas cocoa xcode macos

cocoa - caracteristicas - Usar marcos en una herramienta de línea de comando



prosumer (3)

A partir de Xcode 9.3.1, pude agregar el marco de trabajo a la herramienta de línea de comando configurando Mach-O Type en Static Library para el framework. Luego, en el target línea de comando, asegúrese de agregar el marco a las Target Dependencies y al Link Binary With Libraries Build Phases Link Binary With Libraries . El ejecutable incorporado fue capaz de ejecutarse sin problemas.

Construí una utilidad de línea de comandos (herramienta Foundation) en Xcode, usando Cocoa. La herramienta hace uso de un marco de terceros.

Todo funciona bien en Xcode, pero ¿cómo despliego este programa?

Si ejecuto la aplicación desde Finder, no puede encontrar la biblioteca porque está buscando en ../Frameworks/etc. ¿Puedo vincular estáticamente en el marco de terceros?


Desafortunadamente, no hay forma de agrupar un marco con una utilidad de línea de comandos en OS X y sospecho que el marco al que está enlazando espera formar parte del directorio de Frameworks / del paquete de aplicaciones. Si tiene acceso al código fuente de la infraestructura, puede compilar una biblioteca estática y vincularla estáticamente a su aplicación (o incluir directamente la fuente en el destino de la aplicación). Si no tiene el código fuente o no quiere vincular estáticamente la biblioteca por algún motivo, existen dos opciones restantes:

  1. Si tiene acceso a la carpeta de todo el sistema / Biblioteca / Frameworks, puede instalar allí el marco de terceros. Esto requiere que la Ruta de instalación del framework (la INSTALL_PATH construcción INSTALL_PATH ) se establezca en /Library/Frameworks en tiempo de compilación o que use el install_name_tool para cambiar la ruta de instalación de frameworks a /Library/Frameworks (si no tiene el origen del framework) código).

  2. Cree un paquete de aplicaciones (como si estuviera construyendo una aplicación GUI) con su utilidad de línea de comandos como el ejecutable del paquete de la aplicación (es decir, en AppBundle.app/Contents/MacOS/). A continuación, puede copiar el marco de terceros en el directorio de marcos del paquete de aplicaciones. A continuación, puede colocar el paquete de aplicaciones en el lugar que desee y crear un enlace simbólico a la utilidad de línea de comandos.

La opción 1 es definitivamente el enfoque más aceptado, pero he usado la opción 2 cuando había una razón válida.

Puede encontrar más información sobre creación, enlace e instalación de marcos en la Guía de programación de Frameworks de Apple.


Otra forma, si tiene el código fuente para el marco, es agregar un objetivo de biblioteca estática y crear una lib estática a partir de él. Luego puede vincularlo estáticamente a su herramienta de línea de comandos.